![](/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.