Prova questo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<link type="text/css" media="all" href="tabtastic.css" rel="stylesheet">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Tabtastic</title>
<style type="text/css">
.tabset_tabs { margin:0; padding:0; list-style-type:none; position:relative; z-index:2; white-space:nowrap }
.tabset_tabs li { margin:0; padding:0; display:inline }
.tabset_tabs a { color:#339 ! important; background-color:#def ! important; border:1px solid #99c; text-decoration:none; padding:0 0.6em; border-left-width:0; border-bottom:none }
.tabset_tabs a:hover { color:#00c ! important; background-color:#eff ! important }
.tabset_tabs a.active { color:black ! important; background-color:white ! important; border-color:black; border-left-width:1px; cursor:default; border-bottom:white; padding-top:1px; padding-bottom:1px }
.tabset_tabs li.firstchild a { border-left-width:1px }
.tabset_content { border:1px solid black; background-color:white; position:relative; z-index:1; padding:0.5em 1em; display:none }
.tabset_label { display:none }
.tabset_content_active { display:block }
@media aural{
.tabset_content,
.tabset_label { display:block }
}
/* These styles are for the documentation only */
body { font-family:'Trebuchet MS',serif; background-color:#eee }
#ver { color:#999; font-size:70%; padding-left:2em }
p { margin:0.7em 0 }
code { white-space:nowrap }
pre code { white-space:pre }
.tabset_content a:link,
.tabset_content a:visited { background-color:white }
.tabset_content a:link { color:#039 }
.tabset_content a:visited { text-decoration:none; color:#026 }
.tabset_content a:hover { background-color:#ffc }
body { margin:0 }
h1,h2,h3,h4 { font-family:Verdana,sans-serif; border-bottom:1px solid black; margin:0; margin-bottom:0.5em }
a:link,a:visited { background-color:#ff9; color:black }
a:visited { background-color:#ffd; color:#333 }
a:hover,a:active { background-color:#ff3 }
a[target=external] { border:1px dotted #cc3 }
p { margin-top:0; margin-bottom:1.2em }
h1 { font-size:120%; padding:0.2em 0.5em; background-color:#666; color:#ccc }
h1 code { color:#ccc }
h2,h3,h4 { font-size:110%; border-bottom-color:#999; margin-top:2em }
h3,h4 { font-size:100%; color:#333 }
#pagecontent { margin:2em }
ul { margin-top:0 }
li { margin-bottom:0.6em }
p.overview { font-size:larger; font-style:italic }
.contentfollows { margin-bottom:0 }
.contentbefore { margin-top:0 }
code { font-size:100%; font-family:Courier,'Courier New',monospace; color:#060 }
h2 code { font-size:110% }
pre code { font-size:100% }
pre { margin:0 0 1em 2em }
code .keyword { color:#00c }
code .paren { color:#900; font-weight:bold }
code .number { color:black }
code .string,
code .string .keyword,
code .string .paren,
code .string .string,
code .string .number { color:#949; font-weight:normal }
code .comment,
code .comment .keyword,
code .comment .paren,
code .comment .string,
code .comment .number { color:#999; font-weight:normal }
code.block { display:block; white-space:pre; margin:1em }
p.byline { font-size:80%; padding:0.2em 0; margin:1em 2.4em; font-style:italic; border-top:1px solid #ccc; color:#666 }
.ancillary { color:#666; font-size:90%; font-style:italic }
button { display:inline }
#overview { font-style:italic }
</style>
<script type="text/javascript">
//*** This code is copyright 2002-2003 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
//***Adds a new class to an object, preserving existing classes
function AddClass(obj,cName){ KillClass(obj,cName); return obj && (obj.className+=(obj.className.length>0?' ':'')+cName);
}
//***Removes a particular class from an object, preserving other existing classes.
function KillClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),''));
}
//***Returns true if the object has the class assigned, false otherwise.
function HasClass(obj,cName){ return (!obj || !obj.className)?false:(new RegExp("\\b"+cName+"\\b")).test(obj.className) }
//*** This code is copyright 2003 by Gavin Kistner,
[email protected]
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);
function AttachEvent(obj,evt,fnc,useCapture){
if (!useCapture) useCapture=false;
if (obj.addEventListener){
obj.addEventListener(evt,fnc,useCapture);
return true;
} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
else{
MyAttachEvent(obj,evt,fnc);
obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
}
}
//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
if (!obj.myEvents) obj.myEvents={};
if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
var evts = obj.myEvents[evt];
evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
var evts = obj.myEvents[evt];
for (var i=0,len=evts.length;i<len;i++) evts[i]();
}
//*** This code is copyright 2002-2003 by Gavin Kistner,
[email protected]
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
// Add a new stylesheet to the document;
// url [optional] A url to an external stylesheet to use
// idx [optional] The index in document.styleSheets to insert the new sheet before
function AddStyleSheet(url,idx){
var css,before=null,head=document.getElementsByTagName("head")[0];
if (document.createElement){
if (url){
css = document.createElement('link');
css.rel = 'stylesheet';
css.href = url;
} else css = document.createElement('style');
css.media = 'all';
css.type = 'text/css';
if (idx>=0){
for (var i=0,ct=0,len=head.childNodes.length;i<len;i++){
var el = head.childNodes[i];
if (!el.tagName) continue;
var tagName = el.tagName.toLowerCase();
if (ct==idx){
before = el;
break;
}
if (tagName=='style' || tagName=='link' && (el.rel && el.rel.toLowerCase()=='stylesheet' || el.type && el.type.toLowerCase()=='text/css') ) ct++;
}
}
head.insertBefore(css,before);
return document.styleSheets[before?idx:document.styleSheets.length-1];
} else return alert("I can't create a new stylesheet for you. Sorry.");
}
// e.g. var newBlankSheetAfterAllOthers = AddStyleSheet();
// e.g. var newBlankSheetBeforeAllOthers = AddStyleSheet(null,0);
// e.g. var externalSheetAfterOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css');
// e.g. var externalSheetBeforeOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css',0);
// Cross-browser method for inserting a new rule into an existing stylesheet.
// ss - The stylesheet to stick the new rule in
// selector - The string value to use for the rule selector
// styles - The string styles to use with the rule
function AddRule(ss,selector,styles){
if (!ss) return false;
if (ss.insertRule) return ss.insertRule(selector+' {'+styles+'}',ss.cssRules.length);
if (ss.addRule){
ss.addRule(selector,styles);
return true;
}
return false;
}
// e.g. AddRule( document.styleSheets[0] , 'a:link' , 'color:blue; text-decoration:underline' );
// e.g. AddRule( AddStyleSheet() , 'hr' , 'display:none' );
//*** This library is copyright 2004 by Gavin Kistner,
[email protected]
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code mostly satisfies the conditions.)
//*** Tabtastic -- see http://phrogz.net/JS/Tabstatic/index.html
//*** Version 1.0 20040430 Initial release.
//*** 1.0.2 20040501 IE5Mac, IE6Win compat.
//*** 1.0.3 20040501 Removed IE5Mac/Opera7 compat. (see http://phrogz.net/JS/Tabstatic/index.html#notes)
//*** 1.0.4 20040521 Added scroll-back hack to prevent scrolling down to page anchor. Then commented out :)
AttachEvent(window,'load',function(){
var tocTag='ul',tocClass='tabset_tabs',tabTag='a',contentClass='tabset_content';
function FindEl(tagName,evt){
if (!evt && window.event) evt=event;
if (!evt) return DebugOut("Can't find an event to handle in DLTabSet::SetTab",0);
var el=evt.currentTarget || evt.srcElement;
while (el && (!el.tagName || el.tagName.toLowerCase()!=tagName)) el=el.parentNode;
return el;
}
function SetTabActive(tab){
if (tab.tabTOC.activeTab){
if (tab.tabTOC.activeTab==tab) return;
KillClass(tab.tabTOC.activeTab,'active');
if (tab.tabTOC.activeTab.tabContent) KillClass(tab.tabTOC.activeTab.tabContent,'tabset_content_active');
//if (tab.tabTOC.activeTab.tabContent) tab.tabTOC.activeTab.tabContent.style.display='';
if (tab.tabTOC.activeTab.prevTab) KillClass(tab.tabTOC.activeTab.previousTab,'preActive');
if (tab.tabTOC.activeTab.nextTab) KillClass(tab.tabTOC.activeTab.nextTab,'postActive');
}
AddClass(tab.tabTOC.activeTab=tab,'active');
if (tab.tabContent) AddClass(tab.tabContent,'tabset_content_active');
//if (tab.tabContent) tab.tabContent.style.display='block';
if (tab.prevTab) AddClass(tab.prevTab,'preActive');
if (tab.nextTab) AddClass(tab.nextTab,'postActive');
}
function SetTabFromAnchor(evt){
//setTimeout('document.body.scrollTop='+document.body.scrollTop,1);
SetTabActive(FindEl('a',evt).semanticTab);
}
function Init(){
window.everyTabThereIsById = {};
var anchorMatch = /#([a-z][\w.:-]*)$/i,match;
var activeTabs = [];
var tocs = document.getElementsByTagName(tocTag);
for (var i=0,len=tocs.length;i<len;i++){
var toc = tocs[i];
if (!HasClass(toc,tocClass)) continue;
var lastTab;
var tabs = toc.getElementsByTagName(tabTag);
for (var j=0,len2=tabs.length;j<len2;j++){
var tab = tabs[j];
if (!tab.href || !(match=anchorMatch.exec(tab.href))) continue;
if (lastTab){
tab.prevTab=lastTab;
lastTab.nextTab=tab;
}
tab.tabTOC=toc;
everyTabThereIsById[tab.tabID=match[1]]=tab;
tab.tabContent = document.getElementById(tab.tabID);
if (HasClass(tab,'active')) activeTabs[activeTabs.length]=tab;
lastTab=tab;
}
AddClass(toc.getElementsByTagName('li')[0],'firstchild');
}
for (var i=0,len=activeTabs.length;i<len;i++){
SetTabActive(activeTabs[i]);
}
for (var i=0,len=document.links.length;i<len;i++){
var a = document.links[i];
if (!(match=anchorMatch.exec(a.href))) continue;
if (a.semanticTab = everyTabThereIsById[match[1]]) AttachEvent(a,'click',SetTabFromAnchor,false);
}
if ((match=anchorMatch.exec(location.href)) && (a=everyTabThereIsById[match[1]])) SetTabActive(a);
//Comment out the next line and include the file directly if you need IE5Mac or Opera7 support.
AddStyleSheet('tabtastic.css',0);
}
Init();
},false);
function loadImage(n){
var cnt=null;
var image=new Image(); //Image è un OGGETTO immagine.
image.setAttribute("width","238");
image.setAttribute("height","340");
if(n==0){
image.setAttribute("id","img_1");
image.src="http://212.239.39.34/newsmem/corsport/prima/prima.jpg?rand="+Math.round(Math.random()*1000);
cnt=document.getElementById("box_1");
}
else{
image.setAttribute("id","img_2");
image.src="http://212.239.39.34/newsmem/tuttosport/prima/prima.jpg?rand="+Math.round(Math.random()*1000);
cnt=document.getElementById("box_2");
}
cnt.innerHTML="";
image.setAttribute("onload","imageLoaded(this);");
var loading=new Image();
loading.style.margin="255px 200px 255px 200px";
loading.src="http://allejp.netsons.org/varie/image/loading.gif";
cnt.appendChild(loading);
}
function imageLoaded(img){
var boxId="box_"+img.id.split("_")[1];
var box=document.getElementById(boxId);
box.innerHTML="";
box.appendChild(img);
}
</script>
</head>
<body>
<div id="pagecontent">
<h2 class="tabset_label">Table of Contents</h2>
<ul class="tabset_tabs">
<li class="firstchild"><a href="#overview" class="preActive active" onclick="loadImage(0);">Overview</a></li><li><a class="preActive postActive" href="#requirements" onclick="loadImage(1);">Requirements</a></li><li><a class="preActive" href="#stepbystep" onclick="loadImage(2);">Step By Step</a></li>
</ul>
<div id="overview" class="tabset_content tabset_content_active">
<h2 class="tabset_label">PROVA IMG 1</h2>
<p id="box_1"></p>
</div>
<div id="requirements" class="tabset_content">
<h2 class="tabset_label">PROVA IMG 2</h2>
<p id="box_2"></p>
</div>
<div id="stepbystep" class="tabset_content">
<h2 class="tabset_label">TESTO</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec laoreet. Praesent sit amet odio vel metus suscipit suscipit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce adipiscing. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam et est quis risus ornare interdum. Mauris vitae nulla. Donec est. Morbi nec eros id lectus consequat venenatis. Suspendisse augue. Nam at erat. Nunc eget eros vel orci porta dictum
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec laoreet. Praesent sit amet odio vel metus suscipit suscipit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce adipiscing. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam et est quis risus ornare interdum. Mauris vitae nulla. Donec est. Morbi nec eros id lectus consequat venenatis. Suspendisse augue. Nam at erat. Nunc eget eros vel orci porta dictum
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec laoreet. Praesent sit amet odio vel metus suscipit suscipit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce adipiscing. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam et est quis risus ornare interdum. Mauris vitae nulla. Donec est. Morbi nec eros id lectus consequat venenatis. Suspendisse augue. Nam at erat. Nunc eget eros vel orci porta dictum
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec laoreet. Praesent sit amet odio vel metus suscipit suscipit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce adipiscing. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam et est quis risus ornare interdum. Mauris vitae nulla. Donec est. Morbi nec eros id lectus consequat venenatis. Suspendisse augue. Nam at erat. Nunc eget eros vel orci porta dictum
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec laoreet. Praesent sit amet odio vel metus suscipit suscipit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce adipiscing. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam et est quis risus ornare interdum. Mauris vitae nulla. Donec est. Morbi nec eros id lectus consequat venenatis. Suspendisse augue. Nam at erat. Nunc eget eros vel orci porta dictum
</p>
</div>
</div>
</body>
</html>
Va con firefox, con ie no non ci ho perso tempo per renderlo compatibile con tutti i browser come puoi immaginare :D