Autor Zpráva
tuzticzka
Profil
Zdravím,
snažím se zjistit abosolutní pozici kurzoru myši pro jeden plovoucí boxík. Zkoušel jsem tento script z QuirksMode, ale docela jsem narazil pod IE6 pokud si okno zmenším, abych donutil prohlížeč ke scrollování. Po odladění totiž bude obsah skoro určitě někde přesahovat, takže bude scrollování nutné. Nepodařilo se mi zatím zjistit hodnotu o kterou se posunul obsah stránky. Ve Firefoxu 2 to funguje bezvadně i bez jakýchkoli úprav.

Díky moc
Martin
peta
Profil
tuzticzka
funkce toho scriptu zavisi na mnoha podminkach. Ukaz, co mas ty?

alert(document.body)
alert(document.body.scrollLeft)
je mozne, ze mas nastavene doctype tak, ze javascript nezna body, ale pouze window.documentElement
Pak tam treba nikde neuvadis px jednotky. A kdo vi, v cem jeste muze byt problem...

http://www.volny.cz/peter.mlich/www.htm#mssub9
tady je 5 ruznych prikladu, nekde nad/pod tim odkazy na ruzne literatury na event, a neco jineho je zas pouzito pro hry
Chamurappi
Profil
Reaguji na tuzticzku:
Prosím o živou ukázku.

Reaguji na peta:
je mozne, ze mas nastavene doctype tak, ze javascript nezna body, ale pouze window.documentElement
Ne, to možné není. Přestaň laskavě tento svůj blud papouškovat.
Platí, že document.body je <body>, document.documentElement je <html>. Na to nikdy neměl vliv vykreslovací režim.
peta
Profil
Chamurappi

var wand = (moz || op || ie) ? wandIE : ( (ns) ? wandNS : null );

// --- mouse ---
function mouseNS(e) {Xpos = e.pageX; Ypos = e.pageY;}
function mouseIE() {Xpos = body.scrollLeft + event.x; Ypos = body.scrollTop + event.y;}

if (moz || op || ns)
{
if (ns) {document.captureEvents(Event.MOUSEMOVE);}
document.onmousemove = mouseNS;
xBase = window.innerWidth/8;
yBase = window.innerHeight/8;
}
else if (ie)
{
document.onmousemove = mouseIE;
d = window.document;
body = d.documentElement ? d.documentElement : d.body;
xBase = body.offsetWidth/6;
yBase = body.offsetHeight/6;
}
Hadej, proc tam mam asi d.documentElement ? Protoze d.body nefunguje. Proc podle tebe d.body nefunguje? A proc to mam u podminky if IE? Asi, ze to souvisi nejak s IE. A ty ted jiste rad doplnis spravnou odpoved, kdy lze pouzit a kdy ono. :)
Chamurappi
Profil
Reaguji na peta:
Protoze d.body nefunguje.
Ne, document.body funguje. Historicky vzato má lepší podporu než document.documentElement.

Proc podle tebe d.body nefunguje?
Podle mě funguje. Akorát funguje trochu jinak než document.documentElement.

A proc to mam u podminky if IE?
Měl by sis psát do svých kódů vysvětlující komentáře, protože zjevně s odstupem času ztrácíš přehled o tom, co a proč vlastně děláš. Podmínku na Explorer tam máš zejména kvůli tomu, že na zjištění pozice myši používáš odlišný postup než u jiných prohlížečů.
tuzticzka
Profil
odkaz na konktrétní úkázku problému přihodím hned jak to bude možné
peta
Profil
Chamurappi
funguje, hm :)
Takze, kdyz mi to nefungovalo, tak jsem ztracel cas s funkcnim resenim na document.documentElement . Aha. Tak si dohledej starsi temata, tam jsem to vysvetloval. Dokonce i s tim doctype. A mam pocit, zes tam psal i ty a ze jsme se na tom shodli, ze opravdu s tim a tim doctype, ktere pouziva malokdo, obvykle jenom peta, ze to nefunguje.

S temi komentari mas pravdu, zacnu to psat do novych scriptu. Ja to prave dost sidil, abych usetril kodu, ale pak ztracim prehled pri uprave a ztracim tak pul hodiny nez pochopim, ktera cast, co dela :)
Chamurappi
Profil
Reaguji na peta:
Takze, kdyz mi to nefungovalo […]
Tak jsi pravděpodobně potřeboval pracovat s <html> a ne s <body>. Což nic nemění na tom, že document.body funguje.

Tak si dohledej starsi temata, tam jsem to vysvetloval.
Raz dva tři.

opravdu s tim a tim doctype, ktere pouziva malokdo, obvykle jenom peta, ze to nefunguje
Existují přibližně jen dva vykreslovací režimy, standardní a quirk. Není žádný speciální <!doctype>, který by vyvolal speciální petův režim. Takže na tom jsme se určitě neshodli.
peta
Profil
Chamurappi
vidim, ze je zbytecne se s tebou bavit. Urcite jsem pouzil documentElement z duvodu, ze to nefungovalo body a mam to 100% overene. Jen mi tam chybi poznamka proc, abych ti to mohl zduvodnit.
Vim, ze to simuluje tag HTML.

Takze na prvnim odkazu mas odkaz na cely clanek.
http://www.evolt.org/article/document_body_doctype_switching_and_more/ 17/30655/index.html
gugl pro slova: body documentElement compatibility

Jestli to zaplata na ie6 resi, to uz mne nezajima. Podstatne je, ze kdyz jsem to potreboval, tak to neslo a musel jsem najit podobny clanek.
Chamurappi
Profil
Reaguji na peta:
Urcite jsem pouzil documentElement z duvodu, ze to nefungovalo body
Něco ti možná nefungovalo na document.body, což ale neznamená, že nefunguje document.body.

mas odkaz na cely clanek
… který potvrzuje, že document.body existuje nezávisle na vykreslovacích režimech ve všech prohlížečích vydaných před sedmi lety.
Ten článek napsal mimochodem tentýž člověk jako naprogramoval skript odkázaný v příspěvku #1. Je docela pravděpodobné, že vše, o čem psal, zná.

Jestli to zaplata na ie6 resi
Žádná záplata tohle nikdy nezměnila.
Tohle dohadování mi připadá rušivé, protože opět nejsi schopen nic ze svých slov prokázat. Až příště zopakuješ, že document.body nefunguje spolehlivě, příspěvek ti smažu.
tuzticzka
Profil
Ten původní skript je určitě napsaný dobře, akorát jsem ho použil na špatném místě. Chtěl jsem to využít na oblast jedné velké tabulky(která způsobuje rolování) jako obsah tady (viz původní článek). Problém byl v tom, že jsem neměl ten boxík v tom vnitřním DIVu obsahu(id page-inside), ale hned za body, takže se ta zjištěná pozice nastavovala ke špatnému místu.

Chamurappi (peta) - díky za snahu pomoct

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