MSIE和addEventListener在Javascript中的问题?
document.getElementById('container').addEventListener('copy',beforecopy,false ); 在Chrome / Safari中,上述内容将在复制页面上的内容时运行“beforecopy”函数。 MSIE也应该支持这个function,但由于某种原因我得到这个错误:
“对象不支持这个属性或方法”
现在,我的理解是,Internet Explorer不会与身体节点一起玩,但是我认为通过ID提供一个节点可以正常工作。 有没有人有任何想法我做错了什么? 提前致谢。
**任何人谁可以告诉我什么第三个参数“假”是有益的奖金积分。
 在IE中,你必须使用attachEvent而不是标准的addEventListener 。 
 通常的做法是检查addEventListener方法是否可用并使用它,否则使用attachEvent : 
 if (el.addEventListener){ el.addEventListener('click', modifyText, false); } else if (el.attachEvent){ el.attachEvent('onclick', modifyText); } 
你可以做一个function来做到这一点:
 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'); }); 
你可以在这里运行上面的代码的例子。
  addEventListener的第三个参数是useCapture ; 如果为真,则表示用户希望启动事件捕获 。 
如果您使用的是JQuery 2.x,请在下面添加以下内容
 <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge;" /> </head> <body> ... </body> </html> 
这对我有效。
  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); } 
虽然我build议避免编写自己的事件处理包装,而是使用JavaScript框架(如jQuery , Dojo , MooTools , YUI , Prototype等),并避免自己创build修复。
顺便说一下,W3C事件模型中的第三个参数与冒泡和捕获事件之间的差异有关 。 在几乎所有的情况下,你都会想要处理事件,而不是当它们被捕获时。 对于文本框中的“焦点”事件使用事件委派 ,这是非常有用的,它不会冒泡。
尝试添加
 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
打开头标后
 从IE11开始,你需要使用addEventListener 。  attachEvent已被弃用,并引发错误。 
正如PPK指出的那样,在IE中你也可以使用
 e.cancelBubble = true; 
 使用<meta http-equiv="X-UA-Compatible" content="IE=9"> ,IE9 +通过删除事件名称中的“on”来支持addEventListener ,如下所示: 
  var btn1 = document.getElementById('btn1'); btn1.addEventListener('mousedown', function() { console.log('mousedown'); }); 
 问题是IE没有标准的addEventListener方法。  IE使用自己的attachEvent ,几乎相同。 
好的解释的差异,也关于第三个参数可以在quirksmodefind。