有沒有辦法檢測瀏覽器是否支持事件捕獲以及事件冒泡?我檢查了http://modernizr.com/,但在文檔中看不到任何信息。檢測事件捕獲支持javascript
我認爲IE9不支持事件捕獲,但在其他瀏覽器中應該可以嗎?
爲了清楚起見,我想檢測瀏覽器是否支持事件DOM模型的事件捕獲階段以及事件冒泡階段。
有沒有辦法檢測瀏覽器是否支持事件捕獲以及事件冒泡?我檢查了http://modernizr.com/,但在文檔中看不到任何信息。檢測事件捕獲支持javascript
我認爲IE9不支持事件捕獲,但在其他瀏覽器中應該可以嗎?
爲了清楚起見,我想檢測瀏覽器是否支持事件DOM模型的事件捕獲階段以及事件冒泡階段。
對此可能有更好的方法,但這是我想出的第一件事。您將需要創建一個元素,一個事件處理程序綁定到它在捕捉階段,就可以觸發一個事件,在事件處理程序檢查eventPhase
屬性:
var button = document.getElementById("example");
document.addEventListener("click", function (e) {
console.log(e.eventPhase); // 1 === capture, 2 === target, 3 === bubble
}, true);
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
button.dispatchEvent(evt);
你可能會希望在各種添加的其他支票(例如支持dispatchEvent
),您需要在代碼中實際創建button
元素(並將其插入到DOM中,隱藏)。
這裏有一個fiddle包含上面的代碼,讓你開始。
[event.eventPhase'的文檔](https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase),用於參考 – 2013-07-12 20:01:36
你是什麼意思的「事件捕獲」?每個瀏覽器自1998年以來支持*一些*事件。 – 2013-02-11 10:29:45
@Pekka I - 我認爲他意味着DOM事件模型的捕獲階段(與氣泡階段相反,這是您最經常聽取事件的地方)。 – 2013-02-11 10:31:13
是的我的意思是在事件冒泡階段的事件捕獲階段 – dannym 2013-02-11 10:45:35