1
問題stopPropagation()進行的KeyboardEvent
我怎樣才能成功地預防的KeyboardEvent冒泡,沒有在事件處理程序後立即做了return false
?
注:該事件是KeyboardEvent
型的,我使用jQuery我不,所以e.stopPropagation()
不是一個選項(有沒有當我console.log
它KeyboardEvent
對象這樣的方法)。
更多信息
事件記錄通過本機方法(addEventListener()
或attachEvent()
,根據瀏覽器)的約束,並且缺省值是使用此功能取消:
this.cancelHandler = function(event) {
/**
* Cross browser event cancellation (e.preventDefault() is not available without jQuery
*/
var e = event || window.event;
// All good browsers…
if (e.preventDefault) {e.preventDefault();}
// …and IE
if (e.returnValue) {e.returnValue = false;}
return false;
};
即防止來自發射的默認值,但它不會停止對這些KeyboardEvent
s的傳播。
我在找什麼兼容至少 IE7 +和現代瀏覽器。
這在我看來是正確的解決方案太(是這樣的:'如果(typeof運算e.cancelBubble ==='boolean'){e.cancelBubble = true;}',以防某些舊瀏覽器沒有此屬性)。不幸的是,這並沒有解決我的情況。然而,我發現了一個「黑客」的方法:使用'setTimeout'延遲事件處理程序中的代碼,該代碼還*監聽'keydown'。通過這種方式,事件就會下降,並在執行將要監聽未來事件的代碼之前消失很久。 (雖然討厭,但應該可以註冊更多的聽衆,但是防止當前的事件冒泡......) – Jacob 2012-02-03 14:35:49