Autor Zpráva
srigi
Profil
Vyvíjam kód určený pre IE6, ktorý v podstate emuluje position:fixed. Mam teda blok kódu, v ktorom "štýlujem" DIV, okrem ineho position:absolute, top:xyz px. Nakoľko ale kcem aby element bol na stránke prikovaný, potrebujem volať funkciu na prepočet CSS vlastnosti top vždy pri evente scroll. Pri definovaní event handlera ale nie je možné predávať do funkcie parametre, musím si teda element znova "dohľadať" v DOMe. Kód:

function calculateOffsetY()
{
  var hgh = null;
  var box = document.getElementById('msgbox');
  box.style.top = (((hgh = document.documentElement.scrollTop) ? hgh : document.body.scrollTop)) + (box.offsetHeight / 2);
}


function fixdiv()
{
  var box = document.getElementById('msgbox');
  box.style.backgroundColor = '#fff';
  box.style.border = '5px solid navy';
  box.style.position = 'absolute';
  box.style.width = '400px';

  box.style.left = (document.body.clientWidth / 2) - (aaa.offsetWidth / 2);  // centruj H
  calculateOffsetY();  // Centruj V

  window.attachEvent('onscroll', calculateOffsetY);  // vycentruj pri scrollovani
}

window.attachEvent('onload', fixdiv);


Nemáte niekto tip ako si DOM objekt #msgbox "nakešovať"? Kód bude v podmienenom komentári IE6 lte.
THX.
Chamurappi
Profil
Reaguji na srigiho:
Pri definovaní event handlera ale nie je možné predávať do funkcie parametre
Ale pokud je ta funkce nadefinovaná přímo uvnitř stejného kontextu, může pracovat se stejnými proměnnými.

function fixdiv()
{
  var box = document.getElementById('msgbox');
  // atd.
  window.attachEvent('onscroll', function()
  {
    var hgh = null;
    box.style.top = (((hgh = document.documentElement.scrollTop) ? hgh : document.body.scrollTop)) + (box.offsetHeight / 2);
  });  // vycentruj pri scrollovani
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0