reg*_*gie 1 javascript events internet-explorer listener
此代码可以很好地用于Chrome,但不适用于Internet Explorer 8/9.
/* sitepoint.com/javascript-this-event-handlers */
function AttachEvent(element, type, handler){if (element.addEventListener){element.addEventListener(type, handler, false);}else{element.attachEvent("on"+type, handler);}}
window.addEventListener("load", function() {
//do some stuff
AttachEvent(id, "click", function_name);
}, false);
Run Code Online (Sandbox Code Playgroud)
IE已经抱怨addEventListener行.我相信我需要使用attachEvent.我该怎么做呢?我宁愿保留在其他浏览器中工作的代码,只在Internet Explorer中使用attachEvent.如何使这种跨浏览器兼容?
IE9 确实支持addEventListener().
以下是您现有函数的工作方式attachEvent(以及旧on*属性).
// logic to attach the event correctly in IE9
function AttachEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
}else if (element.attachEvent) {
element.attachEvent('on' + type, handler)
} else {
element['on' + type] = handler;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您将设置窗口加载事件...
AttachEvent(window, "load", function() {
// ...
});
Run Code Online (Sandbox Code Playgroud)
不要忘记,event旧的IE浏览器是全局的.如果你愿意,你可以编写脚本.你只需要调用每个函数callback(),然后调用用户提供handler()的正确参数.
var callback = function(e) {
e = e || window.event;
handler.call(element, e);
};
Run Code Online (Sandbox Code Playgroud)
您可能会被带走并尝试规范化属性event,例如target/ srcElement,但是您可能想要考虑现有的库.
| 归档时间: |
|
| 查看次数: |
5564 次 |
| 最近记录: |