所有浏览器都支持此功能吗?我想使用console.log()
输出错误,但是想知道这是否支持所有浏览器?
console.log("Error etc");
答案 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
之外,您可能还需要做一些其他事情以保持理智......
答案 2 :(得分:9)
现在 2015年8月,我认为目前这个问题的答案是:
移动和桌面上的所有主要浏览器都支持console.log。(caniuse)
它不是任何标准的一部分,但它现在是完整的现代浏览器的预期可交付成果。
然而:
如果您需要支持旧版浏览器(IE<10),更多移动浏览器或运行实验性浏览器的用户,那么使用polyfill(1,{{3} },2,3)以确保
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, " "));
}
}