我有一个JS脚本,可以在所有浏览器中正常运行。 但是对于每个人都很惊讶,在I.E.它在第一次尝试时不起作用。
如果在我加载页面后,按F12(打开ie调试器)并刷新页面, 它工作正常!就像其他浏览器一样!但是对于这项工作,我必须按F12。
当我们打开它时,ie的调试器会做什么吗? 我找不到解决办法!
提前致谢。
答案 0 :(得分:12)
当你没有打开调试器时,IE认为没有console.log这样的东西,并且给你调用未定义函数的错误。当你点击F12,然后你得到控制台,所以console.log不再是未定义的。
您可以将其置于代码顶部来解决方法:
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
不是从你的代码中编辑出console.log,而只是如果控制台不存在,它只会使浏览器不执行任何操作,如果它们未定义则将它们定义为“不执行任何操作”。
如果您希望缩小js文件大小(对于移动设备使用尤其重要),您最终会希望删除发布版本上的详细日志记录。
答案 1 :(得分:2)
您的脚本中是否有类似console.log()
的内容?这可能会解释,因为在按F12之前没有控制台
答案 2 :(得分:2)
上一篇文章的扩展版
if (!('console' in window)) {
var stub = function() { ; };
window.console = {
log : stub,
info : stub,
warn : stub,
error : stub,
assert : stub
};
}
我发布了这个新的,只在需要时安装存根
/**
* On IE console is not set if not opened and debug doesn't exists
*/
(function() {
if (!('console' in window)) { window.console = {}; }
var kind = ['log', 'info', 'warn', 'error', 'assert', 'debug'];
var stub = function() { ; };
for (var i = 0; i < kind.length; i++) {
if (kind[i] in window.console) { continue; }
window.console[kind[i]] = stub;
}
})();
答案 3 :(得分:0)
你们应该查看这个问题以及接受的答案,以获得深入的解释:Does IE9 support console.log, and is it a real function?