1. 程式人生 > >解決IE瀏覽器不支援console,報錯未定義問題

解決IE瀏覽器不支援console,報錯未定義問題

問題產生:

  前端開發除錯經常用到console.info進行列印資訊,前幾天除錯的時候Google功能完全OK,但是IE8瀏覽器點設定按鈕完全沒反應,看了修改的程式碼貌似沒看出什麼存在瀏覽器相容性問題的呀,無意間點設定時發現瀏覽器底部閃了一下“網頁存在錯誤”的提示,閃過後就是完成的標誌,點進去彈出錯誤框,直接看圖:


  網頁提示console未定義,一臉懵逼,這個都可以出錯,百度了一下發現低版本IE6/7/8/9瀏覽器是沒有定義console物件的,所以程式碼會中斷執行。

解決方法:

  第一個思路就是建立一個console物件,實際就是console.info方法,為了能夠使用console的log、warn等方法還是最好寫個適用性強的好了,程式碼如下:

window.console = window.console || (function () {
    var c = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile
    = c.clear = c.exception = c.trace = c.assert = function () { };
    return c;
})();

當然,在解決問題過程中,我又發現如果開啟瀏覽器的開發人員工具(F12)再重新整理頁面的話,頁面又OK了,在控制檯使用console.info又是可以列印資訊的,這說明在將開發人員工具開啟後,瀏覽器自動建立了console這個物件。這就給我們提供了第二條思路,就是在頁面初始化的時候用js程式碼開啟開發人員工具,然後關上,最後再重新整理頁面,問題應該也可以解決。但這個方法太繞所以就沒試,有興趣的可以嘗試一下。

第二個思路就是簡單暴力的註釋該程式碼,但是為了方便除錯,還是建議採用第一種方法。