Autor | Zpráva | ||
---|---|---|---|
tuzticzka Profil |
#1 · Zasláno: 15. 9. 2008, 01:45:06
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 |
#2 · Zasláno: 15. 9. 2008, 08:15:13
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 |
#3 · Zasláno: 15. 9. 2008, 10:08:16
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 |
#4 · Zasláno: 15. 9. 2008, 12:56:46
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 |
#5 · Zasláno: 15. 9. 2008, 14:11:16
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 |
#6 · Zasláno: 15. 9. 2008, 15:11:43
odkaz na konktrétní úkázku problému přihodím hned jak to bude možné
|
||
peta Profil |
#7 · Zasláno: 15. 9. 2008, 15:45:31 · Upravil/a: peta
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 |
#8 · Zasláno: 15. 9. 2008, 17:20:57
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 |
#9 · Zasláno: 16. 9. 2008, 08:08:09
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 |
#10 · Zasláno: 16. 9. 2008, 14:38:49
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 |
#11 · Zasláno: 17. 9. 2008, 01:19:29
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 |
||
Časová prodleva: 16 let
|
0