2014-01-21 33 views
6

我收到錯誤:body.scrollTop在嚴格模式下不推薦使用。如果處於嚴格模式,請使用'documentElement.scrollTop',只有在quirks模式下才能使用'body.scrollTop'。

body.scrollTop在嚴格模式下不推薦使用。如果處於嚴格模式,請使用'documentElement.scrollTop',只有在quirks模式下才能使用'body.scrollTop'。

我的代碼是:

$(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'); 
    }); 

}); 

如何編輯我的代碼使用這個documentElement.ScrollTop?

+0

考慮使用document.scrollTop而不是scrollTop? – njzk2

+1

可能的重複http://stackoverflow.com/questions/19635188/why-is-body-scrolltop-deprecated – sgtdck

+0

您正在尋找'document.documentElement'。這是''標籤創建的元素。 –

回答

14

Dagg Nabbit提供瞭解決方案。如果你想避免在Chrome中棄用警告更改

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

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

。 (Why is body.scrollTop deprecated?

它的工作原理,因爲documentElementhtml節點:

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

但你的代碼(有警告雖然)現在的工作,它會繼續工作時,Chrome瀏覽器中刪除「古怪」的行爲。你不應該改變你的代碼,如果你想繼續支持使用body.scrollTop代表標準模式下的滾動視口(我認爲舊的Chrome和Safari)的瀏覽器。

+1

Sam是對的。如果將'body'部分從選擇器中移出,則Safari 7.0.1(可能還有其他人)將不會在任何位置滾動。 – Vestride

+0

所以這裏的重點是 - 不要改變代碼來壓制警告? – jono

+1

@Jon,像這樣的代碼已經針對標準和非標準行爲('html,body'),所以它不需要改變。 – sam

相關問題