Odlišnost Google Chrome od zbytku JavaScriptového světa
od aichi
Včera jsem se jal v JavaScriptu kvůli jednomu projektu zachytávat události kolečka myši. Tato událost je v IE pod názvem onmousewheel, v ostatních prohlížečích má název DOMMouseScroll. Událost se odpálí na elementu když nad ním zatočíme kolečkem a její vlastnost detail, resp. wheelDelta udávají směr otáčení kolečka.
...
Zde již vyvstávají první rozdíly mezi prohlížeči. Všechny prohlížeče udávají kladné číslo pro kroucení nahoru a záporné pro kroucení dolu, nicméně FireFox jako jediný udává tyto hodnoty s opačným znaménkem. Mohlo by se zdát, že z tohoto čísla bychom mohli odvodit o kolik bylo odscrolováno (otočeno kolečkem), ale chyba lávky. Každý prohlížeč udává jiné hodnoty! IE, Opera a Safari udávají ± 120, Firefox ±3 a Google Chrome kupodivu ±360.
Je vidět, že ač se snaží autoři Chromu, aby byl co nejblíže standardům a zavedeným zvyklostem, je v některých okrajových záležitostech jeho JavaScriptové jádro V8 odlišné. Pokud se liší v tomto případě, je jen otázkou času kdy najde někdo jiný jinou odlišnost. To mě vedlo na myšlenku, zda by tato odlišnost nešla použít k vytvoření testu, který by jednoznačně určil v JavaScriptu Chrome a odlišil ho od Safari.
Zkusil jsem použít vyvolávání událostí nad elementy pomocí JavaScriptové funkce document.createEvent a odpálit DOMMouseScroll nad elementem, nad kterým jsem tuto událost odchytával. Událost jsem zachytil, nicméně v události nejde specifikovat žádným parametrem otočení kolečkem, tudíž vyvolaná událost vždy ukazovala nulové otočení. ![]()
Nezbývá mi než se tedy zeptat, zda neznáte způsob jak JavaScriptem zjistit Chrome jinak, než z userAgent řetězce.
Adresy zpětných odkazů pro tento příspěvek:
Trackback URL (right click and copy shortcut/link location)
8 komentářů
Události, které zmiňuješ, jsou vendor specifik
http://msdn.microsoft.com/en-us/library/ms536951(VS.85).aspx
https://developer.mozilla.org/en/Gecko-Specific_DOM_Events
HTML5 k tomu neříká nic, potřebné DOM3 rozhraní je zatím v draftu a zřejmě ještě nějaký čas bude
http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-Events-eventgroupings-mousewheelevents
21. 01. 09 11.30:37, 
