2013-06-10 11 views
5

Der folgende Code funktioniert gut für Firefox-Browser. Aber nicht Chrom. Was ist das Problem im unteren Code?Onscroll-Funktion funktioniert nicht für Chrome

window.onload = function() 
{ 
    document.body.onscroll = Test.callFn; 
} 

var Test = new function() 
{ 
    this.callFn = function() 
    { 
     console.log("Calling this function"); 
    } 
} 

Dank

+1

Was ist die Überlaufeigenschaft Ihres Körpers? –

Antwort

0

In Chrome, es funktioniert, wenn Sie den Event-Handler zum document.onscroll Ereignis zuordnen:

document.onscroll = function() { console.log('Works in Chrome!'); };

+1

-1 Es funktioniert nicht in Chrome –

+0

Es funktioniert in Chrome. Öffne ein neues Tab (STRG + T), öffne die Entwicklerwerkzeuge (UMSCHALT + STRG + I), kopiere das Code-Snippet oben und blättern Sie durch das Fenster: Sie sehen "Works in Chrome!" erscheint in der Konsole. –

+4

Sie können nicht ernst sein. Es funktioniert einfach in Chrome. –

6

Sie wollen nicht die () wenn Sie callFn sind zuweisen als der Onscroll-Handler.
Sie möchten die Funktion nicht ausführen, der Sie eine Referenz zuweisen möchten.

Darüber hinaus scheint onscroll für ein ganzes Dokument besser Cross-Browser auf dem window Objekt, anstatt document oder document.body zu arbeiten.

window.onscroll = Test.callFn; 
+0

Hallo, Entschuldigung für meinen Tippfehler. Anfangs habe ich die obige Funktion aufgerufen. Aber es funktioniert nicht nur für Chrom. – sprabhakaran

4

Ich hatte ähnliches Problem heute. Sie können document.body zu window ändern:

window.onload = function() 
{ 
    window.onscroll = function() 
    { 
     console.log("Calling this function"); 
    } 
} 

Ich bemerkte, dass in Chrom onscroll Ereignis arbeitet, wenn body Element onscroll Attribut hat, aber im IE es funktioniert, wenn html Element onscroll Attribut hat, so ist es das Beste ist onscroll Ereignis zuweisen Listener zu window Objekt.

PS. Wenn Sie überprüfen möchten, wie viele Pixel Sie gescrollt haben, verwenden Sie window.pageYOffset anstelle von (die gleiche Situation mit Chrome und IE wie oben beschrieben).

0

Eine der Möglichkeiten ist, dass es zwei window.onscroll Anweisungen auf Ihrer Seite gibt, die jede Anweisung unterschiedliche JS-Methode aufrufen. Überprüfen Sie die enthaltenen Dateien und alle Methoden, die auf der Seite geladen werden.

Verwandte Themen