Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE7:document.attachEvent函数上未定义调用_Javascript_Internet Explorer_Attachevent - Fatal编程技术网

Javascript IE7:document.attachEvent函数上未定义调用

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函数,只要它们可

我试图调用IE7中
文档.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:不用担心。主机提供的对象也可能很奇怪。:-)但如今,现代浏览器大多提供真正的功能,至少大部分是真实的对象。