jQuery - IE9 问题(调试器打开后有效)

jQuery - IE9 issues (works once debugger was opened )

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

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打开检查,它就会从那时开始正常工作,即使我刷新页面或再次进入页面而没有检查打开。

知道为什么吗?

这听起来很像我很久以前遇到的问题(仅限 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 关闭时不会发生错误。