哪些浏览器支持console.log()?

时间:2012-12-29 23:00:34

标签: javascript cross-browser console.log

所有浏览器都支持此功能吗?我想使用console.log()输出错误,但是想知道这是否支持所有浏览器?

console.log("Error etc");

8 个答案:

答案 0 :(得分:13)

不,并非所有浏览器都支持console.log,因为它不是标准的一部分,而且是DOM的扩展,因此您不应指望它的存在。为了使您的代码具有弹性,您应该假设不存在并相应地进行编码。

答案 1 :(得分:12)

我过去做过类似的事情:

// Log to native console if possible, alert otherwise
window.console = typeof window.console === 'undefined'
    ? {log:function(/* polymorphic */){alert(arguments)}}
    : window.console;

你可以把它放在"顶部"当你被迫用不支持console的浏览器进行调试时,你的JS工作得非常好,并且不需要你改变你的其他JS源代码#39;已经到处呼叫console.log。当然,除了alert之外,您可能还需要做一些其他事情以保持理智......

http://jsfiddle.net/4dty5/

答案 2 :(得分:9)

现在 2015年8月,我认为目前这个问题的答案是:

移动和桌面上的所有主要浏览器都支持console.log。caniuse

它不是任何标准的一部分,但它现在是完整的现代浏览器的预期可交付成果。

然而:

  

如果您需要支持旧版浏览器(IE<10),更多移动浏览器或运行实验性浏览器的用户,那么使用polyfill(1,{{3} },23)以确保window.console存在。

     

在所有浏览器中,它可能无法在 WebWorkers 中使用。 (4

     

在UC浏览器和Opera Mini中,功能将运行,但您将看不到输出。 (MDN

但对于绝大多数网络用户而言,我们可以假设console.log将按预期工作。

答案 3 :(得分:8)

制作包装函数:

function log(text) {
  if (window.console) {
     window.console.log(text);
  }
}

答案 4 :(得分:7)

大多数浏览器都这样做,但Internet Explorer 9存在问题,除非您打开调试窗口,否则它不会运行任何javascript。花了我们几个小时来找到解决这个问题的方法。

答案 5 :(得分:7)

此代码将检查该函数是否存在,并在不存在的情况下创建一个虚拟函数。信用:StackOverflow

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };

答案 6 :(得分:1)

以下是console.log()不可用时的解决方法。您必须自己检索console.logs

  if (!window.console) window.console = {};
  if (!window.console.log) 
  {
    window.console.logs = [];
    window.console.log = function (string)
    {
      window.console.logs.push(string);
    };
  }

答案 7 :(得分:0)

虽然并非所有浏览器都支持这种功能,但只需一小段代码即可完成。

在他的书“Javascript Ninja的秘密”中,John Resig(jQuery的创建者)有一个非常简单的代码,可以处理跨浏览器console.log问题。他解释说,他希望有一条适用于所有浏览器的日志消息,以下是他编码的方式:

 function log() {
  try {
     console.log.apply(console, arguments);
  } catch(e) {
  try {
     opera.postError.apply(opera, arguments);
  }
  catch(e) {
     alert(Array.prototype.join.call( arguments, " "));
  }
}