Javascript IE7:document.attachEvent函数上未定义调用
我试图调用IE7中Javascript IE7:document.attachEvent函数上未定义调用,javascript,internet-explorer,attachevent,Javascript,Internet Explorer,Attachevent,我试图调用IE7中文档.attachEvent上的.call函数原型方法。但它显示为未定义。 我还检查了文档的类型。attachEvent,应该显示为函数,但它是对象。 有人能解释一下原因吗 document.attachEvent.call(this, 'onclick', function () {}); 获取此错误 Error: Object doesn't support this property or method 主机提供的函数不需要是正确的JavaScript函数,只要它们可
文档.attachEvent
上的.call
函数原型方法。但它显示为未定义。
我还检查了文档的类型。attachEvent,应该显示为函数
,但它是对象
。
有人能解释一下原因吗
document.attachEvent.call(this, 'onclick', function () {});
获取此错误
Error: Object doesn't support this property or method
主机提供的函数不需要是正确的JavaScript函数,只要它们可以被调用。这意味着它们不需要从
函数继承。prototype
(因此可能没有调用或应用,它们来自函数。prototype
)和typeof
可能不会将它们标识为函数(因为从JavaScript的角度来看,虽然它们是可调用的,但它们不是函数)
并非所有过时的浏览器都能提供正确的功能,包括IE7。为什么在调用attachEvent
时需要设置一个特定的this
?感觉像是X/Y问题。我回答了Y(“附件怎么了?”但是我怀疑你真的需要一个X的答案,正是这个东西让你想这么做…嗨,@T.J.Crowder,我一次添加了太多事件,所以不想重复代码两次,一次是使用document.addEventListener
,另一次是使用document.attachEvent
。所以只需为这些函数分配一个局部变量,然后添加事件使用.call
。无论如何,我会找到另一种方法a。我会使用包装器方法来规范化事物,比如,它处理attachEvent
(如上的)的各种问题“
一部分,像那样过时的浏览器上的事件对象没有preventDefault
或stopPropagation
[尽管它们有这个功能,只是没有标准的API],等等。哦,我不知道。谢谢你的邀请info@AndrewLi:不用担心。主机提供的对象也可能很奇怪。:-)但如今,现代浏览器大多提供真正的功能,至少大部分是真实的对象。