2010-09-24 14 views
18

Soweit ich weiß, pageXOffset/pageYOffset Eigenschaften waren bereits seit Netscape 4 Ära verfügbar.
Und es scheint, scrollX/scrollY wurden circa Netscape eingeführt 6.Warum wurden window.scrollY und window.scrollX eingeführt?

Alternative Frage:

Q2. Gibt es einen Browser, der scrollX/scrollY implementiert, aber pageXOffset/pageYOffset nicht unterstützt?

Ich werde eine dritte Frage hinzufügen, weil niemand die vorherigen beantworten konnte:

Q3. scrollX/scrollY wurde dem neuesten Editor-Entwurf des CCSOM hinzugefügt und der Arbeitsentwurf hat nur pageXOffset/pageYOffset, warum behalten beide Attribute?

+0

MDN gibt Folgendes an: Die 'pageXOffset' -Eigenschaft ist ein Alias ​​für die Eigenschaft scrollX:' window.pageXOffset == window.scrollX; // immer wahr'. Dies beantwortet nicht den Grund, aber zumindest legt es nahe, dass die Antwort auf Q2 nein ist. – Manngo

Antwort

2

Everything about it. Wie Sie pageXOffset sehen kann, ist nicht von Internet Explorer 8 und unten unterstützt. In IE8 (und niedriger) sollten Sie scrollLeft/scrollTop von document.body oder document.documentElement je nachdem, was funktioniert (genau wie es in jQuery implementiert ist) verwenden.

Sie können es hier: http://jsfiddle.net/8RFAn/1/

Und ich weiß nicht, warum window.scrollX/Y wurden für mich eingeführt, um diese Eigenschaften wie pageX/YOffset in Bezug auf die Wirkung sieht und Browsern, in denen umgesetzt werden.

+2

thx für die Mühe, aber es beantwortet keine meiner Fragen ^^ – Knu

+0

pageXOffset und pageYOffset sind beide IE9 + –

+0

@JohnHarding Ja, aber zum Zeitpunkt des Schreibens dieser Antwort IE9 existierte noch nicht, zumindest nicht in einem stabilen Ausführung. – pepkin88

-1

Wie pepkin88 sagte, pageXOffset (und alle pageXY-Werte) werden in früheren Versionen von Internet Explorer nicht unterstützt. Die meisten Eigenschaften, die zum Suchen von Objekten und zum Berechnen von Mauspositionen verwendet werden, sind nicht Bestandteil der W3C-Standards. Soweit ich mich erinnere, sind die meisten Eigenschaften Microsofts Erfindung. Wenn Sie also von scrollX und scrollY sprechen, sprechen Sie von ursprünglichen pageXYOffset-Werten. Als standardkonforme Browser kamen, die die pageXY-Eigenschaften unterstützten (nicht Teil des Microsoft-Modells), entschieden sie sich, dass es zu verwirrend wäre, bei den scrollXY-Werten zu bleiben. Also sind sie zu einer viel logischeren (ihrer Meinung nach) Version übergegangen: pageOffset.

Meiner Meinung nach finde ich die scrollXY-Werte intuitiver zu verwenden. Normalerweise muss ich pausieren und nachdenken, wenn ich versuche, zwischen screenX, pageX oder clientX zu entscheiden. Ich denke, dass sie für jede Eigenschaft intuitivere Namen hätten finden können. Wie auch immer, keines von ihnen ist wirklich W3C-Standard, also denke ich, dass Konventionen in diesem Bereich von JavaScript nicht wirklich wichtig sind. Ich bin sehr froh, dass Microsoft sie erfunden hat, weil sie sich als sehr nützlich erweisen.

+2

http://dev.w3.org/csswg/cssom-view/#dom-window-pagexoffset – Knu

+0

Ich spreche von den meisten MSDN-Eigenschaften. – Azmisov

-1

Ich werde versuchen, mit meinem gesunden Menschenverstand zu antworten, nichts Offizielles so leid, wenn das nicht das ist, was Sie in Ihrer Frage gemeint haben.

Mit window.scrollY und window.scrollX wird festgelegt, wie stark der Benutzer der Website vertikal oder horizontal gescrollt hat.

Dies ist zum Beispiel nützlich in Skripten, die nur die "absolute" Position von etwas im Dokument erkennen können und etwas anderes darüber legen müssen. Mit den scrollX- und scrollY-Werten können sie das richtige berechnen Position.

Also wahrscheinlich, wenn die Nachfrage für dynamische Skripte wie benutzerdefinierte Tooltip ausgelöst, die Verantwortlichen für die JavaScript "Framework" beantwortet den Anruf und führte diese Eigenschaften.

Wie gesagt, keine offizielle Antwort, Ihr Googeln wird so gut sein wie meines, um eine solche Antwort zu finden. :)

7

Gibt es einen Browser, der Scrolly/X implementiert aber nicht unterstützt pageY/XOffset

Ich denke, was Sie wissen wollen, ob Sie voll und ganz vertrauen pageY/XOffset und scrollY/X aus hinterlassen das Spiel. Die Antwort ist ja. pageY/XOffset arbeitet in Firefox, Chrome, Opera und IE 9!

Ich kann nicht scrollX/Y auf IE9 derzeit testen, aber es ist nicht aufgelistet auf MSDN properties so ist es eine gute Chance, es Ihre Frage beantwortet. Es kann also Browser geben, die pageY/XOffset aber nicht scrollY/X implementieren.

Warum wurden window.scrollY und window.scrollX eingeführt?

Als scrollY ist nur ein alias, ich bin sicher, dass es nur für eine bessere Lesbarkeit ist.

+2

Nein, gemäß dem von Ihnen angegebenen Link ist pageY/XOffset ein Alias ​​für scrollX/Y https://developer.mozilla.org/en/DOM/window.scrollY – Michael

+1

'Verwenden Sie stattdessen window.pageYOffset für die browserübergreifende Kompatibilität von window.scrollY.' –

Verwandte Themen