2014-01-21 2 views
6

Я принимаю ошибку:body.scrollTop устарел в строгом режиме. Используйте «documentElement.scrollTop», если в строгом режиме и «body.scrollTop», только в режиме quirks.

body.scrollTop устарел в строгом режиме. Используйте «documentElement.scrollTop», если в строгом режиме и «body.scrollTop», только в режиме quirks.

Мой код:

$(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

Дагг Наббит дал решение. Изменение

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

в

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

, если вы хотите, чтобы избежать предупреждения устаревания в Chrome. (Why is body.scrollTop deprecated?)

Это работает, потому что documentElement является html узел:

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

Но ваш код работает сейчас (хотя и с предупреждением), и он будет продолжать работать, когда Chrome удаляет «изворотливый» поведение. Вы, , не должны изменить свой код, если хотите продолжить поддержку браузеров, которые используют body.scrollTop для представления видового экрана с прокруткой в ​​стандартном режиме (как мне кажется, устарел Chrome и Safari).

+1

Сэм прав. Если вы оставите часть «body» вне селектора, Safari 7.0.1 (и, возможно, другие) не будет прокручиваться нигде. – Vestride

+0

Итак, дело здесь - не меняйте код, чтобы подавить предупреждение? – jono

+1

@ Jon, такой код уже нацелен на стандартное и нестандартное поведение ('html, body'), поэтому его не нужно изменять. – sam

Смежные вопросы