![](/img/trans.png)
[英]Is it possible to conditionally style the output from console.log()? (for web browsers)
[英]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
以外的事情,以保持你的理智......
现在是2015年8月 ,我认为目前这个问题的答案是:
移动和桌面上的所有主流浏览器都支持console.log。 ( caniuse )
它不是任何标准的一部分,但它现在是完整的现代浏览器的预期可交付成果。
然而:
如果您需要支持旧的浏览器( IE <10 ),更多的移动浏览器,或用户运行实验的浏览器,那么它可能是使用填充工具(一个好主意, 1 , 2 , 3 , 4 ),以确保
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.