At reinitialisere data for en gif fil
På http://aovnet.dk har jeg en javascript funktion, hvor brugerne kan åbne og lukke en html blok. I linken, som gør dette er der en lille gif fil, en pil, som ved udskiftning vender retning, alt efter om blokken er lukket eller åbnet.Hvis brugerne åbner links til andre sider adresseret i html blokken, og lukker disse igen, så kan det hænde at browseren mister information om pil gif filen, filens indhold, filens størrelse mv. Når den adresseres havner den i en status Uninitialized. Problemet afhænger tilsyneladende af, hvor meget jeg har i siden, og af serverens svartid. Jeg kan ikke finde ud af at løse det. Det nærmeste jeg har fundet på nettet som ligner er, hvor man loader en XML fil http://www.sitepoint.com/article/989.
aovnet.dk er opbygget i frames, og jeg bruger funktionen i såvel menuen og i indholdet. Da der er lidt forskel på blokkene bruger jeg class=L1 i menuerne og class=L2 i indholdet. Når problemet opstår i indholdet mister jeg pilen, og informationen mistes typisk samtidigt for begge ”pil-retninger”. Ved at åbne/lukke nogle gange, så initialiserer det tilsyneladende sig selv. Det fejler aldrig i menuen, og har jeg åbnet/lukket i menuen, så virker indholdet igen. Hvis man tager en status af den fejlende ”blanke” gif, ved at pege-højreklikke med musen, så ser man, at kun URL’en kendes.
Jeg har forsøgt at indkredse problemet i javascript, men jeg er ikke særlig ferm til dette. Her er koden:
//----------------------------
// This file creates a number of variables describing the browser.
var bVer4 = ( parseInt(navigator.appVersion) >= 4 )
var bDoesDHTML = ( (navigator.userAgent.indexOf("MSIE") >= 0) && bVer4)
//-----------------------------------------------
function stat(txt) {window.status = txt; setTimeout("erase()",3000);}
function erase() { window.status="";}
//-----------------------------------------------
// If browser supports this type of DHTML, hide menu items, do mouseover
// style effects and images, and make the expanding menus.
if(bDoesDHTML){
sStyle=(".off{display:none} .on{display:block}")
document.write("<STYLE>"+sStyle+"</STYLE>");
window.onload=Function("MakeExpanding()");
}
//Hente på forhånd - men hvordan gøres det
//på en bedre måde
openimage=new Image();
closedimage=new Image();
openimage.src="img/open.gif";
closedimage.src="img/closed.gif";
function MakeExpanding(){
//--------------------------------------
// Add click handler to all items of class L1 or L2
var oDA=document.all;
for (i in oDA){
if (oDA[i].className=="L1"){
oDA[i].onclick=Function("ToggleMenu(this)");
oDA[i].href="java script:void(0);";
oDA[i].title="Åben / Luk";
}
}
for (i in oDA){
if (oDA[i].className=="L2"){
oDA[i].onclick=Function("ToggleMenu2(this)");
oDA[i].href="java script:void(0);";
oDA[i].title="Åben / Luk";
}
}
}
function ToggleMenu(oHead){
var oAll=document.all;
iIndex=oHead.sourceIndex;
if (oAll(iIndex+3).className=="off"){
oAll(iIndex+1).src="img/open.gif";
oAll(iIndex+3).className="on";
}
else {
oAll(iIndex+1).src="img/closed.gif";
oAll(iIndex+3).className="off";
}
}
function ToggleMenu2(oHead){
var oAll=document.all;
iIndex=oHead.sourceIndex;
if (oAll(iIndex+2).className=="off"){
oAll(iIndex+1).src="img/open.gif";
oAll(iIndex+2).className="on";
if (oAll(iIndex+1).readyState!="complete"){
window.status = oAll(iIndex+1).readyState;
setTimeout("erase()",3000);
}
// oAll(iIndex+1).onreadystatechange=verifyGiffen(oAll(iIndex+1));
}
else {
oAll(iIndex+1).src="img/closed.gif";
oAll(iIndex+2).className="off";
if (oAll(iIndex+1).readyState!="complete"){
window.status = oAll(iIndex+1).readyState;
setTimeout("erase()",3000);
}
// (oAll(iIndex+1)).onreadystatechange = verifyGiffen(oAll(iIndex+1));
// alert("Pilens readyState "+ oAll(iIndex+1).readyState);
}
}
function verifyGiffen(Giffen) {
// alert("Pilens readyState "+ Giffen.readyState);
if ((Giffen).readyState!="complete"){
return false;
}
}
