2013-06-12 47 views
0

後,這個問題是一個後續討論: Why does JavaScript only work after opening developer tools in IE once?的JavaScript中運行MSIE9打開控制檯

請參閱此琴是表明的console.log不再MSIE9一個問題: http://jsfiddle.net/xwsYY/11/

$('button.something').click(function() { 
    $('div.container').html('<p>something</p>'); 
    console.log('microsoft strikes again!'); 
}); 

對不起,但我不能告訴你我有這個問題的實際代碼,但它會在所有其他瀏覽器中檢出,但只有在控制檯已打開並且頁面已打開後纔會在MSIE9中運行被刷新。那很好。沒有評論我對此的看法。

如果有其他人遇到過這個問題,請幫幫我!

+0

[IE9是否支持console.log,它是一個真正的函數嗎?](http://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it -a-real-function) – adeneo

+0

我在說的是console.log問題似乎不再存在。 http://jsfiddle.net/xwsYY/16/ –

+1

它確實不存在於MSIE10中。但是MSIE9沒有任何改變。 – nrodic

回答

1

我有類似的問題,最好的答案是,MSIE沒有console對象,直到F12工具已打開。所以JavaScript會引發錯誤。一旦你打開開發工具,console存在和console.log()不會拋出。

我用這個代碼開發過程中保持兼容性:

try { 
    if (typeof console == "undefined") { 
     this.console = { 
      log: function() {} //warn, error, ... 
     }; 
    } 
} catch (e) { 
    this.console = { 
     log: function() {} //warn, error, ... 
    }; 
} 

但是,建議去掉從生產代碼的所有控制檯引用。

編輯:更改windowthis訪問全球範圍,因爲它更喜歡MSIE。

+0

是的,我看過其他的東西,「已經回答」的東西。我說的是console.log()似乎不是問題。我已經嘗試了替換你自己的控制檯的東西。如果不存在日誌對象。不用找了。 –

+0

@Richard_Peterson看看[更新的jsfiddle](http://jsfiddle.net/xwsYY/15/)。重新啓動瀏覽器,請勿打開開發人員工具並加載此小提琴。我會說它的作品。 – nrodic

+1

我不得不同意你的代碼工作。非常感謝你澄清它。我將不得不再次參加我的項目,並希望我能找到我出錯的地方。但你知道嗎?微軟應該修復這個問題。這些「更新」應該是什麼,他們不斷跟我糾纏?!這個問題現在已經過了2年了! –

1

不幸的是,你錯了console「不再是IE9的問題」。這是一個問題,並且與您所鏈接的問題完全相同。

是的,您引用的代碼和jsFiddled將在IE9中運行 - 即使在控制檯窗口關閉的情況下 - 但這只是因爲調用console是函數中的最後一件事。該函數運行得非常好,直到它遇到console調用,然後靜默失敗。所以它看起來就像它運行完美。

如果你把console呼叫之前的代碼的另一條線,那麼你會發現,這是行不通的,除非....你打開控制檯第一,當然,這需要我們回到回答上一個問題。

+0

我錯誤地在上面發佈了我的回覆;這裏又是: 請試試這段代碼。在我看來,它的工作原理:var i = 0; console.log('microsoft strike again'); $('button.something')。click(function(){$('div.container')。html('

something'+ i +'

'); console.log('microsoft strike again''+ i ); i ++;}); - Richard_Peterson –

相關問題