Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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 为什么mousewheel事件的目标属性不同于其他(单击、mousedown、touchstart)事件的目标属性?_Javascript_Html_Dom_Javascript Events - Fatal编程技术网

Javascript 为什么mousewheel事件的目标属性不同于其他(单击、mousedown、touchstart)事件的目标属性?

Javascript 为什么mousewheel事件的目标属性不同于其他(单击、mousedown、touchstart)事件的目标属性?,javascript,html,dom,javascript-events,Javascript,Html,Dom,Javascript Events,mousewheel事件的target属性提供在操作mousewheel(或支持手势的触摸板)时鼠标当前悬停的DOM元素 当我这样做时(至少在Safari6中,我将稍后测试其他浏览器),我将得到文本节点本身作为target 对于总是生成非文本节点的其他事件,即使我直接在文本上执行操作,也不会发生这种情况 不用说,这会使代码变得更复杂 这有什么原因吗?我希望不必检查父节点,不过谢天谢地,这种情况的好处是我只需要检查目标节点的父节点 我无法确定这是一个特性还是一个bug。以下是jQuery代码的一部

mousewheel事件的
target
属性提供在操作mousewheel(或支持手势的触摸板)时鼠标当前悬停的DOM元素

当我这样做时(至少在Safari6中,我将稍后测试其他浏览器),我将得到文本节点本身作为
target

对于总是生成非文本节点的其他事件,即使我直接在文本上执行操作,也不会发生这种情况

不用说,这会使代码变得更复杂

这有什么原因吗?我希望不必检查父节点,不过谢天谢地,这种情况的好处是我只需要检查
目标
节点的父节点

我无法确定这是一个特性还是一个bug。

以下是jQuery代码的一部分,他们在其中规范了这种行为,因为这是一个bug:

// Target should not be a text node (#504, Safari)
if ( event.target.nodeType === 3 ) {
    event.target = event.target.parentNode;
}

似乎只发生在Chrome/Safari中。。这里有一个JSFIDLE,我用来测试它。。有趣的是,如果在div的填充区域(或没有文本的任何地方)上执行鼠标滚轮,它将返回作为目标的元素。。你能不能用
这个
关键字代替
事件.目标
?这是由jQuery规范化的,因为“一个Safari bug”。@pimvdb如果你挖掘出表明我会接受这个答案的源代码。