我有一個真正討厭的焦點在Internet Explorer中的問題。IE瀏覽器,按下按鈕時textarea的值不會改變
我有一個用於輸入文本的textarea。此textarea對用戶不可見,僅用於爲更高級的視圖提供可靠的文本輸入。
由於textarea不可見,所以不應該在javascript中使用textarea.focus()來激活文本輸入。這一直工作得很好,直到現在我得到真正奇怪的結果。
對於textinput我基本上使用這個事件加上一個確切的副本onkeypress。
textarea.onkeyup = function (e) {
//textarea.value contains the full text
//Update the view with this value
};
問題是有時候textarea.value沒有更新。我甚至可以在上面的keyup事件中看到e.keyCode中的按鈕,但值不會改變。 這似乎發生在我點擊頁面上的某個地方後,但這不會觸發模糊事件。我正在記錄onfocus和onblur事件,所以我可以看到textarea何時失去焦點,但它沒有。而且我仍然收到鍵入/按下/下降事件。
如果我嘗試用textarea.focus()重新調整textarea的焦點,問題依然存在。我發現的解決方法是將窗口的焦點調整爲window.focus(),然後調用textarea.focus()。 這個問題是,焦點是一個非常昂貴的操作在IE瀏覽器(不開玩笑),因爲我無法檢測到什麼時候會發生這個問題,我必須繼續做一定的時間間隔嚴重影響我的應用程序的性能(涉及動畫等)。
我對其他瀏覽器使用完全相同的代碼,並且沒有此問題。
不是一個答案,但如果你發現你不得不放棄textarea的事情,這個頁面可能有助於瀏覽跨瀏覽器的鍵盤事件的變幻莫測:http://unixpapa.com/js/key.html – 2010-09-22 10:07:53