簡體   English   中英

哪些瀏覽器支持console.log()?

[英]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以外的事情,以保持你的理智......

http://jsfiddle.net/4dty5/

現在是2015年8月 ,我認為目前這個問題的答案是:

移動和桌面上的所有主流瀏覽器都支持console.log。 caniuse

它不是任何標准的一部分,但它現在是完整的現代瀏覽器的預期可交付成果。

然而:

如果您需要支持舊的瀏覽器( IE <10 ),更多的移動瀏覽器,或用戶運行實驗的瀏覽器,那么它可能是使用填充工具(一個好主意, 1234 ),以確保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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM