我目前正在使用带有javascript / html前端的LeapMotion进行项目。我想用LeapMotion控制整个应用程序(包括点击,点击和拖动等)。但是,我遇到了一些问题。
我想触发MouseEvent("click")
,但是,我不想在特定元素上触发事件(如here所述)。这是因为我不想手动"检查我的LeapMotion光标所在的元素,并在其上调用触发器。相反,我想引发一个更纯粹的"点击事件,其中javascript确定被点击的内容。这样的事情可能吗?如果没有,是否有任何合理的工作?
提前致谢!
修改
更多信息。我现在可以在我的代码中确定何时需要根据LeapMotion的数据触发click事件。我的问题是我需要一种方法来触发页面上的点击事件。目前,我找到的解决方案可以创建MouseEvent
,但是他们必须在特定的div / element / etc上调用它。我想触发一个更全面的"全球" MouseEvent
这样我就可以在页面上触发它而不是特定的元素。
答案 0 :(得分:0)
对于将来遇到类似问题的人,我最终解决了这个问题。
LeapMotion正在更新屏幕中“光标”对象的位置。当我确定用户正在执行点击时,我执行以下操作:
document.elementFromPoint(x, y)
我检索了光标当前悬停的元素(如果元素彼此重叠,可能需要进行一些解析)。按如下所示创建MouseEvent并将其分派给元素。
var evt = new MouseEvent("mousedown", function(){
view: window,
cancelable: true,
clientX: x,
clientY: y
});
element.dispatchEvent(evt);
我还应该注意,我需要区分mousedown,mouseup,click和mousemove事件。因此,在确定要发送哪个事件时存在一些逻辑。但是,我只按其位置检索元素一次(在mousedown事件调用中),以便在点击时容忍用户手中的某些移动。
这不是最佳解决方案,但它运作良好。希望这有帮助!