检测未处理的鼠标事件

时间:2014-06-22 13:28:04

标签: javascript html css google-chrome

这个问题可能比标题可能让你相信的要复杂得多,但最终还是指出了这个问题。但首先让我向您展示更大的图景:

我在我的应用程序中为用户界面使用铬渲染/内容/ javascript引擎。在用户界面下方虽然是一个真正的3D世界,但也需要了解互动情况。因此,您可以将我的用户界面想象为正常的html页面,其中正文是透明的。因此,每当我收到用户界面的消息(如鼠标移动,鼠标按下等)时,我需要能够检测该消息是否由用户界面处理,或者是否应该传播到世界"下面&#34 ;.所有这些只需要在chrome中工作,其他浏览器并不重要。

到目前为止,我有以下想法(我继续以鼠标移动为例):

  • 将鼠标移动处理程序附加到窗口(或html或正文),当它命中时 - >交付给应用程序。这里的问题是,无论是否处理,事件都会在链中传播

  • 将鼠标移动处理程序附加到窗口,并检查事件目标是否为html或body。这里的问题是,如果我有一个只用于定位或安排子节点的tansparent容器div我会得到这个元素,如果它徘徊甚至它应该去那里的世界

  • 将鼠标移动处理程序附加到窗口,使用属性标记不应捕获鼠标的元素(如透明div),并在鼠标移动处理程序中检查目标是否具有此类属性。如果是,则触发事件,否则处理。这里的问题是,如果其中一个nomouse-elements超过了想要捕获鼠标的元素,我就会错过它

  • 将鼠标移动处理程序附加到窗口,标记不应使用属性捕获鼠标的元素。将鼠标移动处理程序添加到没有no-mouse属性的所有元素,并将属性设置为true。在窗口鼠标处理程序中检查是否设置了事件对象中的该属性。我认为这可行。

我的最后一个想法可行吗?你知道更好的方法吗?提前问候和感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试在整个屏幕上创建一个透明div并将鼠标处理程序附加到它上面。使用z-index将可点击元素放在其前面。

整个屏幕div CSS:

html, body {
    weight: 100%;
    margin: 0;
}

#whole-screen {
    min-height: 100%; 
}
相关问题