Felix Riesterer: Schluss jetzt! Ab ins Archiv damit.

Beitrag lesen

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.