1
我一直在爲跨瀏覽器事件處理組合一個輕量級的事件工具,但遇到了一個相當高的障礙,我不能跳過。它涉及IE9中的srcElement屬性,它只是不適合我!srcElement在IE9中不工作
目前,我的工具看起來像這樣(的srcElement是第三代碼塊):
var bonsallNS = new Object();
bonsallNS.events = {
addEvent: function (node, type, func) {
if (typeof attachEvent != "undefined") {
node.attachEvent("on" + type, func);
} else {
node.addEventListener(type, func, false);
}
},
removeEvent: function (node, type, func) {
if (typeof detachEvent != "undefined") {
node.detachEvent("on" + type, func);
} else {
node.removeEventListener(type, func, false);
}
},
target: function (e) {
if (typeof srcElement != "undefined") {
return window.event.srcElement;
} else {
return e.target;
}
},
preventD: function (e) {
if (typeof srcElement != "undefined") {
window.event.returnValue = false;
} else {
e.preventDefault();
}
}
}
現在,使用下面的下面的測試腳本可以在Chrome和Firefox的罰款,但返回evtTarget是當我嘗試提醒它時,在IE中未定義。我不知道爲什麼,所以任何幫助將不勝感激!看下面的代碼:
var gClick = document.getElementById("clickme");
var gCount = 0;
function mssg(e){
var evtTarget = bonsallNS.events.target(e);
alert("it worked, target: " + evtTarget);
gCount++
if (gCount > 2){
bonsallNS.events.removeEvent(gClick, "click", mssg);
}
}
function setUp(){
bonsallNS.events.addEvent(gClick, "click", mssg);
}
bonsallNS.events.addEvent(window, "load", setUp);
就像我說的,除IE事件源外的其他所有工作!
IE版本?事件模型在IE <= 8上有所不同,所以這些信息至關重要。 –
if(typeof srcElement!=「undefined」){'be'if(typeof e.srcElement ===「undefined」){'? –
或者,'typeof window.event.srcElement!==「undefined」' - 哪些作品,謝謝!小學生錯誤。 – FunnyOxymoron