Liebe Selfer,
habe jetzt einen Würg-around gefunden, der _sehr_ würgig ist.
Wenn die Seite im IE (und nur für den mache ich den ganzen Zirkus hier!) frisch geladen hat und im CSS1Compat-Modus ist, dann gibt es trotzdem noch document.body.scrollTop - also nehme ich es. Sobald der Anwender von der Nullposition wegscrollt, verändert sich das DOM: aus document.body wird document.documentElement. Wenn der Anwender wieder zurück bis zum Anschlag scrollt, dann verändert sich auch das DOM wieder zurück: jetzt ist document.documentElement wieder document.body. - Ich schrieb es ja schon: Affenzirkus!!!
Aber: Wenn das document.documentElement existiert, dann kann man Objekte im Browserfenster zentriert ausrichten! Dann geht das plötzlich! Also folgt der Weisheit Schluss, dass man eben Scrollen _muss_! Und das tue ich mit scrollBy(0, 1). Damit wird um genau einen Pixel nach unten gescrollt und schwuppdiwupp habe ich keine Probleme mehr. Und dem Anwender tut dieses Ge-scrolle um einen Pixel nicht weh.
Eben ein echter super-WÜRG-around *blärch!* SCNR
Zur Krönung mein trauriges Script zum Abgewöhnen:
function anzeigen(bild_url, Untertitel)
{
var html_code = '';
var x_pos = "0px";
var y_pos = "0px";
if(window.innerWidth)
{
x_pos = Math.ceil((window.innerWidth - 150)/2 + window.pageXOffset) + "px";
y_pos = Math.ceil((window.innerHeight - 150)/2 + window.pageYOffset) + "px";
}
else if(document.documentElement && document.documentElement.scrollTop)
{
x_pos = Math.ceil((document.documentElement.offsetWidth - 150)/2 + document.documentElement.scrollLeft) + "px";
y_pos = Math.ceil((document.documentElement.offsetHeight -150)/2 + document.documentElement.scrollTop) + "px";
}
else if (document.body)
{
window.scrollBy(0, 1); // Hier wird gescrollt. Danach gibt es document.documentElement,
return anzeigen(bild_url, Untertitel); // also Funktion beenden und neu aufrufen!
}
html_code += '<table border="0" cellpadding="0" cellspacing="0"><tr>';
html_code += '<td width="120" height="120" style="text-align: center;">';
html_code += '<img id="anzeigebild" alt="kein Bild?" />';
html_code += '</td></tr><tr><td class="zentriert">' + Untertitel + '</td></tr></table>';
document.getElementById("mein_bild").innerHTML = html_code;
document.getElementById("mein_bild").style.display = "block";
document.getElementById("mein_bild").style.position = "absolute";
document.getElementById("mein_bild").style.top = y_pos;
document.getElementById("mein_bild").style.left = x_pos;
document.getElementById("anzeigebild").src = bild_url;
return false;
}
Im HTML-body steht dann irgendwo ein Link <a href="wo/mein/bild/ist" onclick="return anzeigen(this.href, 'Untertitel des Bildes');"> ... </a>
Liebe Grüße aus Ellwangen,
Felix Riesterer.