2014-01-21 7 views
6

Ich erhalte den Fehler:body.scrollTop ist im strikten Modus veraltet. Verwenden Sie 'documentElement.scrollTop' im strikten Modus und 'body.scrollTop' nur im quirks-Modus.

body.scrollTop ist im strikten Modus veraltet. Verwenden Sie 'documentElement.scrollTop' im strikten Modus und 'body.scrollTop' nur im quirks-Modus.

Mein Code ist:

$(document).ready(function(){ 

    //Animates Scrolling to anchor 
    function scrollToAnchor(aid){ 
     var divTag = $("div[name='"+ aid +"']"); 
     $('html,body').animate({scrollTop: divTag.offset().top},'slow'); 
    } 

    //If Checking out as guest, scroll to Shipping Information 
    $("#ReadDescription").click(function() { 
     scrollToAnchor('longdescreadmore'); 
    }); 

}); 

Wie kann ich meinen Code bearbeiten documentElement.ScrollTop zu benutzen?

+0

berücksichtigt mit document.scrollTop anstelle von scrollTop? – njzk2

+1

Mögliches Duplikat http://stackoverflow.com/questions/19635188/why-is-body-scrolltop-deprecated – sgtdck

+0

Sie suchen nach 'document.documentElement'. Das ist das Element, das durch den Tag "" erstellt wurde. –

Antwort

14

Dagg Nabbit gab die Lösung. Ändern

$('html,body').animate({scrollTop: divTag.offset().top},'slow'); 

zu

$('html').animate({scrollTop: divTag.offset().top},'slow'); 

, wenn Sie die deprecation Warnung in Chrome vermeiden wollen. (Why is body.scrollTop deprecated?)

Es funktioniert, weil documentElement sind die html Knoten:

$('html')[0] === document.documentElement //-> true 
$('body')[0] === document.body   //-> true 

Aber Ihr Code arbeitet jetzt (wenn auch mit einer Warnung), und es wird weiter arbeiten, wenn Chrome das „quirky“ Verhalten entfernt. Sie sollten nicht ändern Sie Ihren Code, wenn Sie fortfahren möchten, Browser zu unterstützen, die body.scrollTop verwenden, um das Scroll-Ansichtsfenster im Standardmodus zu repräsentieren (älteres Chrome und Safari, denke ich).

+1

Sam hat Recht. Wenn Sie den Körperbereich aus dem Selektor entfernen, scrollt Safari 7.0.1 (und wahrscheinlich auch andere) nirgends. – Vestride

+0

Also der Punkt hier ist - nicht den Code ändern, um die Warnung zu unterdrücken? – jono

+1

@Jon, Code wie dieser zielt bereits sowohl auf das Standard- als auch auf das Nicht-Standard-Verhalten ab ('html, body'), so dass es nicht geändert werden muss. – sam