28

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

console.log("Error etc");
4

8 回答 8

13

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

于 2012-12-29T23:04:23.147 回答
12

我过去做过这样的事情:

// 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/

于 2013-01-22T22:17:50.567 回答
9

现在是August 2015,我认为这个问题的当前答案是:

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

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

然而:

如果您需要支持旧浏览器(IE<10 )、更多移动浏览器或运行实验性浏览器的用户,那么使用 polyfill(1、2、3、4 确保存在可能是个好主意。window.console

它可能不适用于所有浏览器上的WebWorkers。( MDN )

在 UC Browser 和 Opera Mini 中,这些函数将运行,但您不会看到输出。(

但是对于现在绝大多数的网络用户,我们可以假设console.log会按预期工作。

于 2015-08-12T11:39:26.717 回答
8

此代码将检查该函数是否存在并创建一个虚拟函数以防它不存在。信用:堆栈溢出

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
于 2014-04-03T18:55:50.117 回答
8

做一个包装函数:

function log(text) {
  if (window.console) {
     window.console.log(text);
  }
}
于 2012-12-29T23:06:20.593 回答
7

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

于 2012-12-29T23:04:39.647 回答
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);
    };
  }
于 2015-02-13T11:06:48.500 回答
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, " "));
  }
}
于 2013-12-11T16:52:30.253 回答