JavaScript运行时错误:无法获取未定义或空引用的属性“top”

时间:2014-12-31 11:33:36

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

当使用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;处中断。

非常感谢任何帮助: - )

1 个答案:

答案 0 :(得分:2)

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

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;