长时间运行的脚本 - jQuery(在IE中)

时间:2014-08-09 11:20:07

标签: jquery internet-explorer

我在使用下面的jQuery时出现错误问题一直出现在IE中。错误是'由于漫长的运行脚本,示例页面没有响应'

该脚本基本上是检查谷歌广告位,以及观众是否安装了广告块,以及屏幕是否位于' X'大小通过CSS中的显示无。

如果您在台式机/笔记本电脑上的Chrome中查看http://www.prewheeled.co.uk,则应该会看到右上角的广告。 (请不要点击它!) 现在......如果您拖动浏览器窗口的边缘以使其变小,您应该会看到广告被更小/适合移动设备的版本所取代。

但是不要一直在HTML中加载两个广告(查看来源以查看包含广告的两个div)我想在HTML中加载其中一个,具体取决于屏幕尺寸。不只是通过CSS隐藏它。

我对jQuery并不是很熟悉,我只是把这个脚本搞得一团糟,但是IE让我很生气......我使用的源jQuery是:ajax.googleapis.com/ AJAX /库/ jquery的/ 1.11.0 / jquery.min.js

如果有人可以通过至少纠正我的代码来提供帮助,那就太棒了,谢谢。这是我尝试过的,但在IE11中给出了错误。

<script type="text/javascript">
$(document).ready(function(){
setTimeout(checkAds, 1000);checkAds2();checkAds3();
});
function checkAds() {
    if ($(".google-468").height() == '0') {
            $(".google-468").replaceWith('<div id="block-468"></div><div id="block-responsive-468">Ad Blocker? Our site will not work correctly for you sadly!<br />Please add our site to your allowed list</div>');
    }
}
function checkAds2() {
    if ($("#google-468").css('display') == 'none') {
            $("#google-468").replaceWith('');
    }
}
function checkAds3() {
    if ($("#google-468-responsive").css('display') == 'none') {
            $("#google-468-responsive").replaceWith('');
    }
}
</script>

1 个答案:

答案 0 :(得分:0)

首先,正如它在documentation中所说的那样,将代码传递给setTimeout时强烈建议不要这样做:

  

代码:在备用语法中是您希望在延迟毫秒后执行的一串代码(建议不要使用此语法,原因与使用eval()相同)

所以我建议使用以下语法调用函数:

setTimeout(checkAds, 25);

但是,如果您仍然希望像使用它一样使用它,则需要在window上下文中定义这些功能,请参阅jsfiddle

window.checkAds = function() {
...
}

它没有用,因为当解释器动态地将你的代码包装在匿名函数中时,你的函数在新的上下文中是未定义的。