Problem mit IE: Bild wechseln per JS
mikune
- javascript
0 Cybaer
Habe folgendes vor:
In einer Bildleiste kann man vorschaubilder anklicken, darauf erscheint an unterschiedlichen Positionen ein mittelgroßes Bild. Dieses kann man anklicken um per openwindow eine ganz große Version des Bildes zu erhalten.
Das funzt aus wunderbar, aber es gibt ein problem, das nur im IE auftritt:
wenn ich ein mittelgrosses bild angeklickt habe um das ganz grosse bild im openwindow anzuzeigen , dieses neue fesnter dann schliesse und ein anderes bild in der Bildleiste anklicke dann springt das mittelgrosse bild wie gewünscht zwar um aber mit einer unschönen verzögerung: es springt auf die neue position und lädt erst dann das dort anzuzeigende Bild, es ensteht ein Ruckeln.
Habe eine Funktion Bildwechsel, die per onclick auf eines der kleinen Bilder in der Bildleiste aufgerufen wird.
Zu beachten: Firefox, Netscape und Opera haben das Problem nicht, da wird das neue mittelgrosse Bild sauber geladen. Im IE klappt das ja auch aber nur bevor ich das openwindow ausführe oder danach, wenn ich das mittelgrosse Bild mehrmals aufrufe
Kennt jemand eine Schleife/Abfrage, die bewirkt, das auch der IE das gewechselte Bild an der richtigen position aber erst anzeigt, nach dem es komplett geladen ?
zu sehen unter http://www.stoetzer-neher.de/test/index.shtml
Hier die Javascripts (die lade-funktionen für die arrays werden per body onload =init(); aufgerufen):
function domove()
{
if (document.all) /* wenn IE */
{
document.all.bild_gross.style.left=x; /* x verschieben */
}
else
if (typeof(document.getElementById)=="function")
/* fuer neueren Netscape/Mozilla/Firefox */
{
document.getElementById("bild_gross").style.left=x; /* x verschieben */
}
else
if (document.bild_gross) /* fuer Netscape 4.x */
{
document.bild_gross.left=x; /* x verschieben */
}
else /* wenn keine Unterstuetzung */
alert("Leider kann dieser Browser das nicht machen. Wir empfehlen Firefox");
}
var bilder_m=new Array();
function lade()
/* Laedt die Bilder */
{
var i;
for (i=0;i<7;i++)
{
bilder_m[i]=new Image(); /* neues Image-Objekt erzeugen */
bilder_m[i].src=namen[i]; /* Quelldateiname des Bildes setzen */
}
}
var bilder_l=new Array();
function lade_l()
/* Laedt die Bilder */
{
var i;
for (i=0;i<7;i++)
{
bilder_l[i]=new Image(); /* neues Image-Objekt erzeugen */
bilder_l[i].src=namen_l[i]; /* Quelldateiname des Bildes setzen */
}
}
function zeige_bildtext(nr)
{
document.getElementById("TA").innerHTML = bildtext[nr];
}
function zeige_m(znr)
{
document.images[12].src=bilder_m[znr].src;
zeige_bildtext(znr);
}
function wechselBild(xn,nr)
{
x=xn; /* neue x-Koordinate */
znr= nr;
if (document.images[12].complete == true) {
domove();
zeige_m(znr); /* zeigen */
}
else {
Status = Status + "Grafik nicht geladen\n";
}
/*domove(); bewegen */
gross_nr = nr;
}
var open_bild_l_Win = null;
function open_bild_l(gross_nr)
{
zeigbreite = 980;
zeighoehe = 550;
var titel = document.getElementById("TA").innerHTML;
bild_l = bilder_l[gross_nr].src;
open_bild_l_Win = window.open("","",'width='+zeigbreite+',height='+zeighoehe+' ,resizeable=yes,scrollbars=no');
open_bild_l_Win.document.write("<html><head><title>"+titel+"</title></head><body bgcolor=#000000><center><table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><tr><td align='center' valign='middle'><img src="+bild_l+"></td></tr></table></center></body></html>");
open_bild_l_Win.opener = self;
open_bild_l_Win.focus();
}
Hi,
Kennt jemand eine Schleife/Abfrage, die bewirkt, das auch der IE das gewechselte Bild an der richtigen position aber erst anzeigt, nach dem es komplett geladen ?
Unsichtbarmachen und beim Feuern von onload dann sichtbarmachen.
Gruß, Cybaer