Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 在事件处理程序中使用此_Javascript_Dom_Javascript Events - Fatal编程技术网

Javascript 在事件处理程序中使用此

Javascript 在事件处理程序中使用此,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,我试图在DOM level 3事件规范中的事件处理程序函数中找到这个关键字的含义 根据我的实验,这个指的是事件.currentTarget对象 标准中有没有提到这种行为 根据《JavaScript最终指南》一书所述,此指的是似乎错误的事件目标event.currentTarget似乎更符合逻辑,因为事件处理程序是作为HTML元素对象的方法调用的 有人能澄清一下吗 在冒泡的情况下,我看到“this”发生了变化,表示 event.currentTarget 在元素的事件处理程序中,使用默认捕获(fa

我试图在DOM level 3事件规范中的事件处理程序函数中找到
这个
关键字的含义

根据我的实验,这个指的是
事件.currentTarget
对象

标准中有没有提到这种行为

根据《JavaScript最终指南》一书
所述,此
指的是似乎错误的
事件目标
event.currentTarget
似乎更符合逻辑,因为事件处理程序是作为HTML元素对象的方法调用的

有人能澄清一下吗

在冒泡的情况下,我看到“this”发生了变化,表示 event.currentTarget


在元素的事件处理程序中,使用默认捕获(false),
将引用检测到事件的元素。任何一个都可以使用

例如:

element.addEventListener('keydown', function (event) {
    // `this` will point to `element`
}, false);
window.addEventListener("error", function (event) {
    event.target.src = 'some_path';
    // `this` will point to window
    // `event.target` will point to the element that had an error
}, true);
捕获事件(true)时,在窗口级别,例如,
event.target
将引用发起事件的元素,而
将引用捕获元素。例如:

element.addEventListener('keydown', function (event) {
    // `this` will point to `element`
}, false);
window.addEventListener("error", function (event) {
    event.target.src = 'some_path';
    // `this` will point to window
    // `event.target` will point to the element that had an error
}, true);

我希望这能说明两者之间的区别。

事实上,在这种情况下,权威指南是错误的

我在以下文件中找到了一个参考:

使用一个参数调用
callback
,该参数的值是事件对象
E
,将回调值设置为
E
currentTarget

DOMLevel3事件规范在以前的版本中没有对它做太多的说明——它是不依赖语言的。刚才所说的

事件侦听器函数: 此函数没有返回值。参数应为实现
事件
接口的对象

但是,当前版本忽略了这些绑定。术语表附录中描述了:

事件处理程序事件侦听器:实现
EventListener
接口并提供
EventListener.handleEvent()
回调方法的对象。事件处理程序是特定于语言的。事件处理程序在特定对象(的)上下文中调用,并随
事件
对象本身一起提供

此外,即将发布的DOM Level 4草案明确指出:

如果
listener
回调是一个函数对象,则它是
事件的属性值


人的可能复制品。。你能在标记为复制的内部回答吗?@Starx:不,不太可能。我在这里找到了很好的解释,也谈到了事件处理程序@Bergi,他在问这个关键词代表什么,他会在那里读到很多答案。非常感谢Bergi。这是一个非常精确的答案。注意HTML5规范不是标准,DOM规范是::-。DOM规范与语言无关(4.01之前的HTML规范也是如此),因此不包括像this关键字这样的语言功能。@RobG您的观点绝对有效。我对书中的描述感到困惑,所以在这里问了这个问题。@PK还应该提到,在很多地方,HTML5只是记录行为(并在过程中选择最喜欢的),因此,尽管Bergi对HTML5规范的引用在大多数浏览器中可能对大多数情况都是正确的,但对某些浏览器来说却不正确(例如,使用IE的attachEvent添加的侦听器)@RobG:谢谢你的评论。我现在还在DOM级别3和4规范中找到了引用:-)