IE9和$(文档).ready失败,除非Developer Console处于打开状态

时间:2013-10-14 13:57:50

标签: javascript jquery ajax

我有一个通过Ajax握手工作的Web应用程序,通过向服务器应用程序发送ini命令,在原始页面加载完成时启动握手过程。此传输被编码为$(document).ready(...)链中的最后一次调用。

在所有浏览器上都像魅力一样,除了 IE9(当然)。 IE10很好。搜索网络和SO会发现大量信息根本没用。

所以我想我打开开发人员控制台来检查是否有任何问题/错误被报告,因为我的所有Ajax调用都包含在try / catch中,其中console.log输出错误。而现在,有趣的是,只要开发者控制台打开,它就可以完美运行吗?

那么似乎是某种时间问题。我讨厌让我的现成链延迟使用window.setTimeout()quirk。

已经测试过:

    $(document).ready(function() {
        $(document).delay(500).doInitSequence(...)
    }

但这并没有改变任何事情。

2 个答案:

答案 0 :(得分:2)

我之前已经搞砸了。除非开发者控制台是打开的,否则很容易忘记IE中不存在控制台对象。你需要做的就是放入

var console = console || { log: function() {} };

位于脚本的顶部。如果您正在使用任何其他控制台功能,则必须将它们放入其中。

答案 1 :(得分:0)

您应该禁用Internet Explorer浏览器的console功能。

您可以使用条件HTML注释并覆盖控制台功能来执行此操作:

<!--[if IE]>
    <script type="text/javascript">
         var console = { log: function() {} };
    </script>
<![endif]-->