我用這個功能我每次開酥料餅的時間來創建一個事件:JS - 創建之前刪除事件新
var createCustomEvent = function() {
var event;
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent("CUSTOM EVENT", true, true);
} else {
event = document.createEventObject();
event.eventType = "CUSTOM EVENT";
}
event.eventName = "CUSTOM EVENT";
if (document.createEvent) {
popover.dispatchEvent(event);
} else {
popover.fireEvent("on" + event.eventType, event);
}
};
在onother腳本中,我這樣做是爲了一個事件偵聽器添加到節點:
document.removeEventListener('CUSTOM EVENT', handler);
document.addEventListener('CUSTOM EVENT', handler);
現在做酥料餅開盤後我有很多CUSTOM EVENT
在document
(我用getEventListeners(document)
測試)共同創造。 我看到許多CUSTOM EVENT
在控制檯中使用getEventListeners(文件),所以我認爲他們是事件監聽器,但我總是刪除EventListener
之前創建新的,所以也許問題是,我有很多事件而不是事件偵聽器,我我不確定。
我怎樣才能避免這種情況,並創建總是隻有一個CUSTOM EVENT
只使用JavaScript?
感謝
我米困惑,你有多個*事件*或多個*事件處理程序*?如果你只想要一個事件處理程序,只需綁定一次。不知道,如果這是相關的,但'document.removeEventListener('CUSTOM EVENT');'是無效的。你必須傳遞一個你想要移除的處理函數的引用。 –
我編輯過,這是我的錯誤,但它不是一個相關的問題。順便說一句,我在控制檯中看到很多CUSTOM EVENT使用'getEventListeners(document)',所以它們是_event listeners_,但正如你所看到的,我總是在創建新的之前刪除EventListener,所以也許問題是我有很多_events_而不是_event listeners_,我不確定。 – Frank