Unterstützung für Eventhandler abfragen / window.onscroll
wahsaga
- javascript
hi,
per Javascript möchte ich darauf reagieren, wenn der Benuzter die Seite scrollt.
IE und Opera kennen window.onscroll, Firefox offenbar nicht. Weiß jemand, wie das beim Safari aussieht?
Da eine per Javascript vorgenommene Layoutänderung nur sinnvoll ist, wenn per onscroll auf's Scrollen reagiert werden kann, würde ich gern abfragen, ob der Browser diesen Eventhandler unterstützt.
Jemand eine Idee, wie das gehen könnte?
alert(typeof window.onscroll) liefert mir im IE, Opera und FF übereinstimmend "undefined", so lange ich keine Funktionsreferenz angegeben habe - und anschließend in allen drei Browsern "function". So komme ich da also schon mal nicht weiter.
Und kennt jemand eine Möglichkeit, auf das Scrollen auch in den Geckos zu reagieren?
gruß,
wahsaga
Hallo,
Und kennt jemand eine Möglichkeit, auf das Scrollen auch in den Geckos zu reagieren?
Wäre es akzeptabel, wenn du -z.B. per setInterval- regelmäßig pageXOffset bzw.
pageYOffset abfragst und mit dem vorherigen Wert vergleichst? Sollte laut
SELFHTML ja mit Firefox und Safari funktionieren.
Gruß, Jan
hi,
Wäre es akzeptabel, wenn du -z.B. per setInterval- regelmäßig pageXOffset bzw. pageYOffset abfragst und mit dem vorherigen Wert vergleichst? Sollte laut SELFHTML ja mit Firefox und Safari funktionieren.
Jein :-)
Hatte ich mir auch schon als Workaround überlegt - leider ein ziemlich unschöner.
Um damit in meiner Funktion, die Veränderungen an CSS-Eigenschaften von Objekten vornimmt, schnell genug reagieren zu können, damit kein "Ruckeln" auftritt, müsste ich vermutlich das Intervall ziemlich klein wählen - aber zum Performance-Killer soll ein optisches DHTML-Gimmick dann eigentlich auch wieder nicht werden.
Dann werde ich vielleicht doch eher eine Browserabfrage machen, und es nur für IE/Opera implementieren.
gruß,
wahsaga
Hallo wahsaga
Um damit in meiner Funktion, die Veränderungen an CSS-Eigenschaften von Objekten vornimmt, schnell genug reagieren zu können, damit kein "Ruckeln" auftritt, müsste ich vermutlich das Intervall ziemlich klein wählen
Wie klein?
- aber zum Performance-Killer soll ein optisches DHTML-Gimmick dann eigentlich auch wieder nicht werden.
Solange du es nicht übertreibst, dürfte das kein Problem darstellen. Jede
Änderung der Anzeige dürfte eine wesentlich höhere Anforderung darstellen,
als eine kurze Funktion, die mittels Timeout aufgerufen wird.
Beispiel:
Solange ich nicht scrolle, kann ich auf dieser Seite keinen Unterschied
mit/ohne Javascript in der Prozessorauslastung feststellen.
(550MHz Pentium)
Sobald ich allerdings scrolle, steigt sie um über 70%.
Auf Wiederlesen
Detlef
IE und Opera kennen window.onscroll, Firefox offenbar nicht. Weiß jemand, wie das beim Safari aussieht?
Doch Mozilla Browser reagieren aber leider anders drauf. Allerdings nur wenn du mit den Scroller scrollst und nicht mit den Tasten oder der Mausrad.
Da eine per Javascript vorgenommene Layoutänderung nur sinnvoll ist, wenn per onscroll auf's Scrollen reagiert werden kann, würde ich gern abfragen, ob der Browser diesen Eventhandler unterstützt.
Soweit ich das verfolgt habe, gar nicht. Hier https://forum.selfhtml.org/?t=119416&m=766197 u. ff. ging es im Prinzip um das Thema.
Dass du onscroll nach belieben ändern kannst ist verständlich, dieser hat im Prinzip keine Bedeutung. Die Funktion müßte eigenlich scroll() heißen, die dann die Funktion onscroll aufruft, wenn der Event auftritt. onscroll ist also nur der Handler, der indiziert was passieren soll wenn etwas passiert.
Genau das gleiche Thema (es ging darum, ob das Image Objekt den onerror Event feuert oder nicht) war die Tage auch ein längere Thread in der JS Newsgroup, wo soweit ich das mitgelesen habe auch keine Lösung gefunden wurde.
Struppi.
hi,
Doch Mozilla Browser reagieren aber leider anders drauf. Allerdings nur wenn du mit den Scroller scrollst und nicht mit den Tasten oder der Mausrad.
Hm, und "anders" bedeutet wie?
Ich kann jedenfalls auch wenn ich am Rad drehe (ähm ...) kein Auslösen meiner Funktion feststellen.
Dass du onscroll nach belieben ändern kannst ist verständlich, dieser hat im Prinzip keine Bedeutung.
Ja, das dachte ich mir schon.
Also nix mit onscroll im Gecko? Schade.
gruß,
wahsaga
Doch Mozilla Browser reagieren aber leider anders drauf. Allerdings nur wenn du mit den Scroller scrollst und nicht mit den Tasten oder der Mausrad.
Hm, und "anders" bedeutet wie?
Bei mir indem ich an dem Scroller ziehe.
Also nix mit onscroll im Gecko? Schade.
wie gesagt ich habe die Diskussionen nur am Rande mitverfolgt. Aber soweit ich das verstanden habe, nein.
Struppi.
hi,
Doch Mozilla Browser reagieren aber leider anders drauf. Allerdings nur wenn du mit den Scroller scrollst und nicht mit den Tasten oder der Mausrad.
Hm, und "anders" bedeutet wie?
Bei mir indem ich an dem Scroller ziehe.
Hm, auch darauf reagiert mein FF 1.5 Beta 1 nicht.
window.onscroll = function () { alert("scrolling"); }
gruß,
wahsaga
Bei mir indem ich an dem Scroller ziehe.
Hm, auch darauf reagiert mein FF 1.5 Beta 1 nicht.
window.onscroll = function () { alert("scrolling"); }
- keine Reaktion vom Panda, weder beim Scrollen über Rad, Tastatur - noch beim ziehen am Scroller oder klicken auf die Scrollpfeile.
Bei mir 1.0.5 (winXP) nur beim ziehen und wenn ich auf die Pfeile drücke. Er reagiert aber sehr unstabil, mit groben Fehldarstellungen (das Fenster wird vergrößert, aber die Statusleiste bleibt an der alten Stelle, sieht seltsam aus), vielleicht wegen dem alert.
Struppi.