2
今天我偶然發現了一個奇怪的Internet Explorer怪癖。我調用元素的焦點函數,然後綁定事件偵聽器。在所有瀏覽器中,它都按時間順序執行,但在IE中卻沒有。addEventListener觸發焦點之前的Internet Explorer焦點?
我有這樣一段代碼:
var t = document.getElementById('focusable');
t.focus();
t.addEventListener('focus', function() {
alert('This should only happen after the second focus.');
});
<input id="focusable">
我的問題是:
爲什麼會出現這種情況?,我怎樣才能解決它沒有setTimeout(fn,0);
黑客。
注:我使用IE11
謝謝您的答覆。我只是測試了setTimeout「解決方案」的一致性,但偶爾會失敗。我把setEventListener放在settimeout裏面。 – A1rPun 2014-11-03 09:06:17
謝謝T.J.我也討厭它,但至少這是一致的;) – A1rPun 2014-11-03 09:20:22
@ A1rPun:不用擔心。公平的警告:上述工作適用於IE11和Chrome,但Firefox拒絕給予重點關注。它執行't.focus();'行,但沒有給出字段焦點 - 即使我只將該位放在'setTimeout'中。 V.怪異的,我知道我已經把焦點集中在Firefox的領域之前...... – 2014-11-03 09:22:31