2013-02-11 95 views
1

有沒有辦法檢測瀏覽器是否支持事件捕獲以及事件冒泡?我檢查了http://modernizr.com/,但在文檔中看不到任何信息。檢測事件捕獲支持javascript

我認爲IE9不支持事件捕獲,但在其他瀏覽器中應該可以嗎?

爲了清楚起見,我想檢測瀏覽器是否支持事件DOM模型的事件捕獲階段以及事件冒泡階段。

+1

你是什麼意思的「事件捕獲」?每個瀏覽器自1998年以來支持*一些*事件。 – 2013-02-11 10:29:45

+3

@Pekka I - 我認爲他意味着DOM事件模型的捕獲階段(與氣泡階段相反,這是您最經常聽取事件的地方)。 – 2013-02-11 10:31:13

+0

是的我的意思是在事件冒泡階段的事件捕獲階段 – dannym 2013-02-11 10:45:35

回答

1

對此可能有更好的方法,但這是我想出的第一件事。您將需要創建一個元素,一個事件處理程序綁定到它在捕捉階段,就可以觸發一個事件,在事件處理程序檢查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包含上面的代碼,讓你開始。

+0

[event.eventPhase'的文檔](https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase),用於參考 – 2013-07-12 20:01:36