当Internet Explorer开发人员工具栏可见时,JavaScript脚本仅适用于Internet Explorer

我有一个在Firefox 5上运行的脚本,但没有使用Internet Explorer 9.当我打开Internet Explorer Developer Toolbar插件并尝试与以前相同的操作时 – 它可以工作。 页面上还有其他JavaScript代码正在运行,因此它只是一个不可用的部分。

有没有类似开发人员工具栏在运行时更改Internet Explorer的任何选项?

如果没有引用任何代码,就必须猜测。

我的猜测是你在代码中使用console.log (或其他一种console方法)。 在IE8和IE9上,除非开放工具处于打开状态,否则console对象不存在。 奇怪但真实。

当您没有打开开发工具时,您应该按照“ console未定义”的方式获得脚本错误。

正因为如此,并且因为每个浏览器中都不存在console (当然不是IE6或IE7,它们仍占大约18%的普通浏览用户),所以最好不要将它们包含在生产代码中或主动检查console在使用前存在。

您的脚本是否正在访问或运行仅在开发人员工具栏打开时可用的任何方法,例如console.log ? 例如,在未定义console.log时运行console.log ,因为开发人员工具栏未打开将导致抛出exception。

正如类似问题中所述 ,使用此代码(最好在其他脚本标记之前的页面顶部的脚本标记中):

 (function() { var method; var noop = function () {}; var methods = [ 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn' ]; var length = methods.length; var console = (window.console = window.console || {}); while (length--) { method = methods[length]; // Only stub undefined methods. if (!console[method]) { console[method] = noop; } } }()); 

或者在这里找到相同代码的更新版本: https : //github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js

这才刚刚为我解决了同样的问题。