繁体   English   中英

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

[英]Which browsers support console.log()?

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

console.log("Error etc");

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

我过去做过类似的事情:

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

您可以将它放在JS的“顶部”,当您被迫使用不支持console的浏览器进行调试时,它可以很好地工作,并且不需要您更改已经存在的其他JS源代码在整个地方调用console.log 当然,你可能想做一些alert以外的事情,以保持你的理智......

http://jsfiddle.net/4dty5/

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

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

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

然而:

如果您需要支持旧的浏览器( IE <10 ),更多的移动浏览器,或用户运行实验的浏览器,那么它可能是使用填充工具(一个好主意, 1234 ),以确保window.console存在。

它可能无法在所有浏览器上的WebWorkers中使用。 MDN

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

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

制作包装函数:

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

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

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

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

以下是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);
    };
  }

虽然并非所有浏览器都支持这种功能,但可以使用一小块代码来完成。

在他的书“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, " "));
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM