0

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

在所有浏览器上都像魅力一样工作,除了IE9(当然)。IE10 没问题。搜索网络和 SO 揭示了大量根本没有帮助的信息。

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

那么,似乎是某种时间问题。我不喜欢用 window.setTimeout() 怪癖来推迟我的就绪链。

已经测试过:

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

但这并没有改变什么。

4

2 回答 2

2

我以前在这件事上犯过错误。很容易忘记,除非开发者控制台打开,否则 IE 中不存在控制台对象。您需要做的就是投入

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

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

于 2013-10-14T14:01:57.497 回答
0

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

您可以使用条件 HTML 注释以及覆盖控制台功能来做到这一点:

<!--[if IE]>
    <script type="text/javascript">
         var console = { log: function() {} };
    </script>
<![endif]-->
于 2013-10-14T14:04:21.730 回答