在我用超链接包装的简单应用程序画布中。一些放置在画布舞台上的对象对click
事件有特殊的鼠标交互。是否有任何可能的解决方案,以防止通过点击对象与我的鼠标单击事件监听器超链接跳转?
通常您可以在生成的鼠标事件上调用preventDefault
,它将阻止链接事件的触发。
element.addEventListener("click", function(e) {
e.preventDefault();
}, false);
这是不可能使用EaselJS,因为虽然你可以访问任何EaselJS鼠标事件的nativeEvent
, EaselJS根本不使用"点击"事件(而是使用"mousedown"one_answers"mouseup"的组合)。因此,阻止click事件的默认值将不起任何作用。
// You would expect this to work.
myShape.on("click", function(e) {
e.nativeEvent.preventDefault(); // Nothing. This cancels a "mouseup" instead.
});
解决方案
但是,您可以很容易地解决这个问题。在被点击的项目上设置一个标志(或者你在应用程序中设置的任何地方)。
myShape.addEventListener("click", function(event) {
myShape.clicked = true;
}, false);
然后,自己监听画布单击事件,检查并检查标志。之后一定要重置它。这是可能的,因为"click"总是在"mouseup"之后触发
stage.canvas.addEventListener("click", function(event) {
if (myShape.clicked) { event.preventDefault(); }
myShape.clicked = false;
}, false);
这里是一个快速的小提琴显示它的工作。http://jsfiddle.net/buqkvb1u/
我们想看看这在EaselJS中处理是否有意义。谢谢你的报告!