不同机器上相同浏览器版本的JavaScript行为不一致

Inconsistent JavaScript behavior on same browser versions across machines

本文关键字:JavaScript 不一致 浏览器 机器 版本      更新时间:2023-09-26

我看到了最奇怪的事情,需要一些帮助来确定发生了什么。我在Microsoft SharePoint服务器上运行了一些JavaScript,它会发出异步图像请求。

当我在我的32位&64位IE9浏览器,代码按预期运行。当我的同事在他的32位和64位IE9中加载完全相同的页面(从预定义列表中提取)时(注意,所有浏览模式都设置为相同的值),图像请求不会发出。

但是如果我的同事打开开发工具并再次关闭它们(不使用它或提交任何命令),然后重新加载页面,则请求正确。如果他关闭浏览器并重新打开它,它将停止工作,直到重新打开开发工具。

没有ActiveX、flash或其他任何东西。它是100%的JavaScript,所以我完全不知道如何解决问题。有人能告诉我发生了什么吗?或者给我指明正确的方向吗?

需要注意的事项:

  1. 他的系统确实启用了JS——页面上的所有其他JavaScript对他来说都运行良好,似乎只是我的JavaScript受到了影响
  2. 我们都测试了Chrome和Firefox,它们都取得了成功
  3. 我们都在IE9、IE8和IE7的不同浏览器模式下进行了测试(通过IE9可执行文件)
  4. 如果重要的话,我们都在Windows7上

我已经找到了问题的根源,它确实与console.log()有关。基本上,我从微软直接学到的是,只有打开浏览器的开发工具,window.console对象才存在。在第一次打开它之前,没有window.console,引用它会产生代码中断错误。

我发现这是一个特别烦人的bug,因为我习惯于使用控制台跟踪bug。。。无论如何,MS说这个问题在IE10中得到了解决,但对于我们这些必须支持当前/以前版本的人来说,明智的做法是为这个函数使用一个包装器,在调用它之前测试window.conf的定义(我实际上有一个用于其他目的的包装器,所以我很容易添加测试条件)。

希望这能帮助其他同样难以追踪IE漏洞的人。