2012-02-01 131 views
3

我正在使用IE9并尝试调试一些JavaScript。我在console.log()实际登录到控制台的地方读取了所有内容,而不是在开发人员工具打开时呕吐警报。console.log在ie9中使用警报,开发人员工具打开

但是,我有开发工具打开和console.log仍然提供警报。我错过了什么?


  • 浏览器模式:IE9兼容模式
  • 文档模式:IE8标准
+1

你必须提供一个测试用例,因为我从来没有**(即使是在IE6中的开发工具)有'console.log()'创建一个'alert()'。根据我的经验,如果工具没有打开,'console.log()'会抛出一个错误,因为'console'是未定义的,除非这些工具是打开的。 – 2012-04-28 13:03:26

回答

1

我会看看,如果执行console.log被你的JS什么地方重新定义。

0

console.log()不会alert()什么......我想你在代码中使用了一些自定义的console.log函数。不过我总是建议使用其附带html5boilerplate那些细小的功能:

// usage: log('inside coolFunc', this, arguments); 
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ 
window.log = function f(){ log.history = log.history || []; log.history.push(arguments); if(this.console) { var args = arguments, newarr; args.callee = args.callee.caller; newarr = [].slice.call(args); if (typeof console.log === 'object') log.apply.call(console.log, console, newarr); else console.log.apply(console, newarr);}}; 

// make it safe to use console.log always 
(function(a){function b(){}for(var c="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),d;!!(d=c.pop());){a[d]=a[d]||b;}}) 
(function(){try{console.log();return window.console;}catch(a){return (window.console={});}}()); 

包含它们,利用它们,你就没有引起您在IE的调试输出的任何错误。

0

这可能是console.log已被页面上的某些脚本重写。我会测试这个alert行为是否出现在所有网站上,或者只是您正在测试的这一行为。 (如果它确实发生无处不在,也许console.log正在被改写浏览器加载项)。

尝试使用console.warn代替(或甚至console.error,在紧要关头) - 也许仍然会像预期的那样。这是一个很好的理智检查,如果你永远不会得到console.log的工作,它仍然可以让你调试输出。

相关问题