所有浏览器都支持吗?我想使用输出错误,console.log()
但想知道是否所有浏览器都支持?
console.log("Error etc");
所有浏览器都支持吗?我想使用输出错误,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
保持理智之外,您可能还想做其他事情……
现在是August 2015,我认为这个问题的当前答案是:
移动和桌面上的所有主要浏览器都支持 console.log。(犬)
它不是任何标准的一部分,但它现在是一个完整的现代浏览器的预期交付物。
然而:
如果您需要支持旧浏览器(IE<10 )、更多移动浏览器或运行实验性浏览器的用户,那么使用 polyfill(1、2、3、4 )来确保存在可能是个好主意。
window.console
它可能不适用于所有浏览器上的WebWorkers。( MDN )
在 UC Browser 和 Opera Mini 中,这些函数将运行,但您不会看到输出。(犬)
但是对于现在绝大多数的网络用户,我们可以假设console.log
会按预期工作。
此代码将检查该函数是否存在并创建一个虚拟函数以防它不存在。信用:堆栈溢出
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
做一个包装函数:
function log(text) {
if (window.console) {
window.console.log(text);
}
}
大多数浏览器都可以,但是 Internet Explorer 9 存在问题,除非您打开调试窗口,否则它不会运行任何 javascript。我们花了几个小时才找到解决这个问题的方法。
这是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, " "));
}
}