2012-12-04 260 views
1

在Firefox和Chrome我的代碼工作正常,但在IE中事件不會移除。刪除事件監聽器

dojo.connect(d, "onmouseout", function(evt) { //remove event });

我已經試過document.removeEventListener("keydown", keyHandler); dojo.disonnect(document,"keydown",keyHandler); document.detachEvent("keydown", keyHandler); 但似乎沒有任何工作。 keyHandler是我不想在keydown上執行的函數,當鼠標不在存儲在變量d中的畫布上時。如果你正在使用正確

回答

1

管理得到它使用這個命令:document.onkeydown = null;

0

檢查disconnect功能(和檢查拼寫/語法以及)。該documentation說:

斷開()接受一個特製的參數,因爲它是唯一 參數,該參數,巧合的是,從dojo.connect返回值。

...當您向其提供3個參數時,該處理程序是最後一個。作爲一個說明,我不太清楚Dojo內部會發生什麼(雖然它可能實現了一個polyfill,所以如果您使用Dojo,您不必使用本地函數),但IE的attachEventdetachEvent接受事件以'on'爲前綴的名稱,例如onmouseout,onkeydown(見MSDN article)。

另外,請注意事件名稱的區別。道場似乎用IE的語法與on前綴,而標準DOM實現omits it。所以,你可能要檢查是否具有約束力和解除綁定相同的事件(例如,如果你綁定到onkeydown,那麼你就應該解除綁定onkeydown,而不是​​)。