Mat*_*rym 84 javascript internet-explorer addeventlistener
document.getElementById('container').addEventListener('copy',beforecopy,false );
Run Code Online (Sandbox Code Playgroud)
在Chrome/Safari中,当复制页面上的内容时,上面将运行"beforecopy"功能.MSIE也应该支持这个功能,但出于某种原因我收到了这个错误:
"对象不支持此属性或方法"
现在,我的理解是Internet Explorer不会使用body节点,但我认为通过ID提供节点可以正常工作.有没有人对我做错了什么有任何想法?提前致谢.
**任何能告诉我第三个参数"False"有用的人的奖励积分.
CMS*_*CMS 185
在IE中你必须使用attachEvent而不是标准addEventListener.
通常的做法是检查addEventListener方法是否可用并使用它,否则使用attachEvent:
if (el.addEventListener){
el.addEventListener('click', modifyText, false);
} else if (el.attachEvent){
el.attachEvent('onclick', modifyText);
}
Run Code Online (Sandbox Code Playgroud)
你可以做一个功能:
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
} else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
// ...
bindEvent(document.getElementById('myElement'), 'click', function () {
alert('element clicked');
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处运行上述代码的示例.
第三个论点addEventListener是useCapture; 如果为true,则表示用户希望启动事件捕获.
小智 31
如果您使用的是JQuery 2.x,请在中添加以下内容
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge;" />
</head>
<body>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这对我有用.
Internet Explorer(IE8及更低版本)不支持addEventListener(...)。使用该attachEvent方法,它具有自己的事件模型。您可以使用以下代码:
var element = document.getElementById('container');
if (document.addEventListener){
element .addEventListener('copy', beforeCopy, false);
} else if (el.attachEvent){
element .attachEvent('oncopy', beforeCopy);
}
Run Code Online (Sandbox Code Playgroud)
尽管我建议避免编写自己的事件处理包装器,而改用JavaScript框架(例如jQuery,Dojo,MooTools,YUI,Prototype等),并避免自己创建修复程序。
顺便说一下,事件的W3C模型中的第三个参数与冒泡事件和捕获事件之间的区别有关。在几乎每种情况下,您都希望在事件冒泡时进行处理,而不是在捕获事件时进行处理。当对诸如“焦点”事件之类的文本框使用事件委派时,它很有用,不会冒泡。
尝试添加
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Run Code Online (Sandbox Code Playgroud)
在打开头标签之后
| 归档时间: |
|
| 查看次数: |
127172 次 |
| 最近记录: |