【问题标题】:JavaScript runtime error: Unable to get property 'top' of undefined or null referenceJavaScript 运行时错误:无法获取未定义或空引用的属性“顶部”
【发布时间】:2015-02-27 12:12:27
【问题描述】:

在使用 IE10 时,我在尝试单击指向同一项目中网页的超链接时收到错误 JavaScript runtime error: Unable to get property 'top' of undefined or null reference,JavaScript 应该滚动到页面上的相应位置。

如果我使用任何其他浏览器,除了 IE,它可以在页面之间运行。但是,如果我在同一页面中使用相同的引用,它将在所有浏览器中上下滚动,但在离开页面时不会在 IE 中滚动。

链接

<li><a href="index.html#home_section">Home</a></li>

我使用的是jquery.nav.js 3.0.0 版,页面在var offset = $(target).offset().top; 处中断。

任何帮助将不胜感激:-)

【问题讨论】:

  • 这有帮助吗? scrollTo: function(target, callback) { var offset = $(target).offset().top; $("html, body").animate({ scrollTop: offset }, this.config.scrollSpeed, this.config.easing, callback); },
  • 完整代码可在https://github.com/davist11/jQuery-One-Page-Nav获取

标签: javascript jquery html internet-explorer internet-explorer-10


【解决方案1】:

如果浏览器是 IE,则任何元素的 Jquery offset().top 计算都会出现一些问题。 要解决此问题,您可以使用本机 Javascript 计算元素顶部和左侧的偏移量,并相应地使用它。在 Javascript 方法下,该方法为文档中的任何元素返回计算顶部和左侧的对象,它将适用于所有浏览器:

function findElementTotalOffset(obj) {
    var oleft = otop = 0;
    if (obj.offsetParent) {
        do {
            oleft += obj.offsetLeft;
            otop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return {left : oleft, top : otop};
}

示例:var offset = findTotalOffset($(target)).top;

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 2015-07-10
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2014-02-22
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多