【问题标题】:body.scrollTop is deprecated in strict mode. Please use 'documentElement.scrollTop' if in strict mode and 'body.scrollTop' only if in quirks mode.body.scrollTop 在严格模式下已弃用。请在严格模式下使用“documentElement.scrollTop”,仅在怪癖模式下使用“body.scrollTop”。
【发布时间】:2014-01-21 20:29:40
【问题描述】:

我收到错误消息:

body.scrollTop 在严格模式下已弃用。请在严格模式下使用“documentElement.scrollTop”,仅在怪癖模式下使用“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?

【问题讨论】:

  • 考虑使用 document.scrollTop 代替 scrollTop 吗?
  • 您正在寻找document.documentElement。这就是<html> 标签创建的元素。
  • @DaggNabbit 这让我很困惑。呵呵。我应该把它放在哪里?
  • @user2433689 我猜你会想要$('html') 而不是严格模式下的$('html,body')

标签: javascript jquery deprecated


【解决方案1】:

Dagg Nabbit 给出了解决方案。改变

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

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

如果您想避免 Chrome 中的弃用警告。 (Why is body.scrollTop deprecated?)

之所以有效,是因为documentElementhtml 节点:

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

但是您的代码现在可以运行(尽管有警告),并且当 Chrome 删除“古怪”行为时它会继续运行。如果您想继续支持在标准模式下使用body.scrollTop 表示滚动视口的浏览器(我认为是旧版 Chrome 和 Safari),您不应该更改您的代码。

【讨论】:

  • 山姆是对的。如果您将body 部分留在选择器之外,Safari 7.0.1(可能还有其他版本)将不会滚动到任何地方。
  • 所以这里的重点是 - 不要更改代码来抑制警告?
  • @Jon,这样的代码已经针对标准和非标准行为 (html,body),因此无需更改。
猜你喜欢
  • 1970-01-01
  • 2016-08-15
  • 2014-05-01
  • 2021-03-09
  • 1970-01-01
  • 2019-01-31
  • 2014-11-02
  • 2012-04-18
相关资源
最近更新 更多