在IE中testingconsole.log语句
可能重复:
“控制台”是未定义Internet Explorer的错误
如果在代码中有console.log
语句,Internet Explorer将会引发JavaScript错误(至less在我们的Intranet用户安装的IE7中)。
我使用Firefox进行大部分开发testing,主要是因为Firebug提供的function(我使用了很多控制台语句),但是我也需要在IE中进行testing。
如果我将以下内容添加到我的JavaScript中,则不会引发错误。
var debugging = false; if (typeof console == "undefined") var console = { log: function() {} };
问题是,如果debugging模式为false,我想触发一个事件。 如果我创build一个函数来testingdebugging是否为false,并执行一个操作(此时只是一个警报),但是当我尝试执行以下操作时,我收到一个IE错误,说没有定义控制台 。
var debugging = false; // or true if (typeof console == "undefined") var console = { log: function() {consoleMsg()} }; function consoleMsg() { if(!debugging) { alert('Console.log event in Production Code'); }
如果有人能帮我修理我的代码,提供一个更好的方法来帮助我实现我的目标,或者指导我去一个资源来教育自己,我会非常感激。
你不必跳过所有这些篮球。 使用前请检查控制台是否存在。
所以,而不是:
console.log('foo');
使用:
window.console && console.log('foo');
…你不会有任何错误。
或者,您可以在脚本的顶部检查它,如果未定义,只需填写一个空的函数即可:
// At the top of your script: if ( ! window.console ) console = { log: function(){} }; // If you use other console methods, add them to the object literal above // Then, anywhere in your script: console.log('This message will be logged, but will not cause an error in IE7');
对于更强大的解决scheme,请使用这段代码(从twitter的源代码中获取):
// Avoid `console` errors in browsers that lack a console. (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; } } }());
“控制台”本身需要是一个function,以及“日志”。 所以:
if(typeof(console) === 'undefined') { console = function(){}; console.log = function(){consoleMsg()}; }
你有没有试试看:
var debugging = false; // or true try { console.log(); } catch(ex) { /*var*/ console = { log: function() {consoleMsg()} }; }
(function(debug) { var console; function wrapConsoleMethod(fnName) { if(fnName in console) console[ fnName ] = function(fn) { return function() { if(debug) return fn.apply(console, arguments); else alert('Console event in Production Code'); }; }(console[ fnName ]); else ; // fn not in console }; if(!('console' in window)) window.console = { log : function() {} // ... }; console = window.console; wrapConsoleMethod('log'); // ... })(true /* debug */); console.log('test');
- IE:无法从*下载*。 无法打开此Internet站点。 请求的网站不可用或无法find
- 为什么IE使密码框小于文本框?
- 如何使用JavaScript检测Internet Explorer(IE)和Microsoft Edge?
- 当附加查询string参数或使用POST不是一个选项时,如何避免Internet Explorer 11中的AJAXcaching
- window.location.reload清除caching
- 为什么一个自引用的iframe不是无限循环的,会导致我的机器崩溃?
- JavaScriptclosures如何收集垃圾
- 如何改变使用css的IE8中禁用的html控件的颜色
- 我怎样才能使“显示:阻止”工作在IE浏览器的<td>?