如何在旧版本的IE中将addEventListener重新定义为attachEvent
How to redefine addEventListener to be attachEvent in older versions of IE
我有一个插件,里面有很多这样的行:
document.addEventListener('keypress', function(e) {
this.drop.addEventListener('click', function(e) {
我想在顶部有一点javascript,它重新定义addEventListener,以便它在旧的浏览器中实际使用attachEvent(我可以使用navigator对象)。我不想像上面那样为每一行代码都做if语句。
var addEvent = function (ele, event, func) {
if (ele.addEventListener) {
ele.addEventListener(event, func, false);
} else if (ele.attachEvent) {
ele.attachEvent('on' + event, func);
} else {
ele['on' + event] = func;
}
};
我认为最好的方法是自己添加此事件。
这是我能想到的最简单的实现:
if (!Element.addEventListener)
Element.prototype.addEventListener = function(event,handler, placeholder) {
this.attachEvent('on'+event,handler);
}
在页面的开头运行这个之后,您应该能够在元素上使用addEventListener
。我写了应该,因为你需要更多这样的函数才能在所有浏览器上使用相同的代码。您最好的选择是使用现有的代码(如polyfill)来处理所有这些。
相关文章:
- 在Phonegap中重定向到新页面后,AdMob未定义
- $routeParams在传递到新视图时未定义&控制器
- 使用具有用户定义字段的新请求者创建新的Zendesk票证
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- 新的自定义角度指令不起作用
- 正在新文件中创建自定义任务
- 在自定义指令中角度设置新变量
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Ng管理员自定义参考列表-具有创建新条目的能力
- JavaScript-为什么当我向表中添加新列时,它会说“;未定义的“;在额外的细胞中
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 使用 RequireJS 加载时如何不定义“定义”
- 在数据表的新行中添加按钮,变得未定义
- 从新对象的属性更新对象的属性,但前提是新对象上的属性不是未定义的
- 创建新的子类对象时设置父类中定义的变量时出现问题
- 创建 JavaScript 自定义应用程序的新实例
- 如何观看 img 元素的 ngSrc 并在自定义指令中获取新的宽度和高度
- Chrome扩展抛出"未定义"定义变量
- 如何将自定义(定义)顺序应用于DC.js中的行图的行
- Javascript/JQuery POST "url"未定义(定义)