在我的简单应用程序中,画布由超链接包裹。放置在画布舞台上的某些对象在click
事件上具有特殊的鼠标交互。是否有任何可能的解决方案,可以通过使用鼠标单击事件侦听器单击对象来防止超链接跳转?
最佳答案
通常,您只需在生成的鼠标事件上调用preventDefault
,它就会停止触发链接事件。
element.addEventListener("click", function(e) {
e.preventDefault();
}, false);
使用EaselJS是不可能的,因为尽管您可以在任何EaselJS鼠标事件上访问
nativeEvent
,但EaselJS根本不使用“ click”事件(而是使用“ mousedown”和“ mouseup”的组合)。因此,防止点击事件发生默认设置将无济于事。不起作用
// 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);
然后,自己侦听canvas click事件,检查并检查标志。确保之后将其重置。这是可能的,因为“ mouseup”之后始终会触发“ click”
stage.canvas.addEventListener("click", function(event) {
if (myShape.clicked) { event.preventDefault(); }
myShape.clicked = false;
}, false);
这是一个快速的小提琴,显示了它的工作原理。 http://jsfiddle.net/buqkvb1u/
我们正在寻找在EaselJS中处理是否有意义。感谢您的举报!