jQuery - IE9问题(调试器打开后工作)

时间:2015-03-05 10:36:00

标签: javascript jquery internet-explorer internet-explorer-9 inspect

我有一个单页网站,我使用以下代码在页面之间滚动:

function gotoPage() {
        var cur = $(this);
        var role = cur.attr('role');
        var target = $('#' + role);

        $('html,body').animate({
          scrollTop: target.offset().top - 94
        }, 1000);
    }

$('.navBt').click(gotoPage);

HTML:

<div class="navBt" role="topSpacing">
    <img src="img/nav_campaign.png" />
</div>

<div class="navBt" role="sectionD">
    <img src="img/nav_club.png" />
</div>

它可以在除IE之外的任何浏览器上完美运行。 当我在IE9上打开它(不确定其他版本)它不会工作,但是一旦我按F12打开检查,它将从那一点开始正常工作,即使我刷新页面或再次进入页面而没有检查打开。

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

这听起来非常像我很久以前的一个问题(仅限IE):
你在javascript代码中的某个地方使用console吗?最有可能是console.log()

然后您遇到了问题,因为在IE浏览器上,console javascript对象在您打开开发控制台之前不存在。因此会出现一些javascript错误(您无法看到导致您的控制台未打开),这会导致其他javascript代码的执行停止。

这是我找到的解决方法:

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };

将它放在您的javascript代码的顶部。
这将创建一个伪console对象和伪方法log,因此在console关闭时不会出现错误。