IE 8中的Javascript执行阻止呈现/滚动

IE 8中的Javascript执行阻止呈现/滚动,javascript,internet-explorer,google-maps,facebook,settimeout,Javascript,Internet Explorer,Google Maps,Facebook,Settimeout,我在IE 8上遇到了一些问题(可能是以前的所有版本)。Firefox和Chrome/Webkit看起来不错 导致页面呈现、滚动以及基本上所有页面交互被阻止。据我所知,Javascript执行导致了这种情况的发生 具体来说,我认为在我的具体情况中有两个主要的责任方-谷歌地图API(v3)和Facebook连接 在这两种情况下,我都使用Google和Facebook提供的异步加载方法 到目前为止,我已经尝试了几种方法,但都没有效果: 使用jQuery的$(document.ready()延迟执行。这

我在IE 8上遇到了一些问题(可能是以前的所有版本)。Firefox和Chrome/Webkit看起来不错

导致页面呈现、滚动以及基本上所有页面交互被阻止。据我所知,Javascript执行导致了这种情况的发生

具体来说,我认为在我的具体情况中有两个主要的责任方-谷歌地图API(v3)和Facebook连接

在这两种情况下,我都使用Google和Facebook提供的异步加载方法

到目前为止,我已经尝试了几种方法,但都没有效果:

  • 使用jQuery的$(document.ready()延迟执行。这只是防止锁定,直到页面加载稍晚。实际上,由于我使用gzip压缩,我不确定它是否有任何作用——我不清楚它是如何工作的
  • 使用窗口延迟执行。onload。同样的情况-整个页面加载,然后在抓取和执行Facebook连接代码时锁定
  • 使用setTimeout(函数(){},0)。我不是100%清楚这应该是如何工作的——据我所知,它本质上应该是强制函数代码的执行等待堆栈清除。不幸的是,这似乎对我没有多大帮助
  • 我认为这个问题对我来说尤其夸张,因为我的连接速度很慢

    我想不出我的网站有什么特别的奇怪之处会成为一个因素,但我不会排除这个可能性

    所以,我的问题是:

    对此问题是否有任何最佳实践现有解决方案

    有什么事情是我明显做错的吗

    如果有人愿意查看具体的实施情况,那么违规网站位于:

    提前感谢您的时间和帮助

    Sam

    是的,浏览器(至少IE)在执行Javascript时挂起。这会使事情变得更快,因为它不必每次进行更改时都重新绘制和重新计算布局。然而,如果您的Javascript需要很长时间才能执行,这看起来就像冻结一样。同步XMLHttpRequests也很重要

    不幸的是,没有很好的解决办法。典型的建议是使用
    window.setTimeout()
    函数将超时设置为0(或非常小的值),将工作负载分成几个部分。在这两者之间,浏览器可以设法重新绘制自己,并对一些用户交互作出响应,因此它看起来不会冻结。但是代码变得很难看

    对于冗长的XMLHttpRequests,您别无选择,只能使用异步版本

    补充道:啊,我看你已经知道了。你应该仔细阅读P您还知道IE8内置了开发人员工具(按F12键激活)并且Javascript选项卡有一个探查器吗?我检查了一下,只在jQyery的
    get()
    方法中花了2秒钟。这让我强烈怀疑某些东西仍在使用同步XMLHttpRequests

    功能:获取
    计数:10
    包含时间:2039,14
    独家时间:2020,59
    网址:
    线路:127


    人力资源管理!我不知道IE的开发工具-在我第一次运行时,我有6秒的get()时间。啊!我不知道这叫什么-我想这是开始的地方。谢谢事实上,那种“获取”的方法并不是我们都在想的方法。这实际上是在一段处理CSS不透明性的代码中,看起来很有可能我遇到的问题与我所怀疑的完全无关。再次感谢您的帮助,朝着正确的方向稍微推动一下会有很大的帮助。:)现在我已经有机会调试了所有东西:问题在于一个名为“colorbox”的jQuery插件,尽管没有被调用,但它在通过脚本标记包含时运行了一些配置代码(并且遇到了一些错误,比如特定的Alpha透明代码)。删除后,Facebook Connect或Google Maps功能都不会对页面产生任何负面的阻止效果。对不起,我认错人了。再次感谢你,维尔克斯!