在由超链接包装的简单应用程序画布中。一些放置在画布舞台上的对象在click事件上有特殊的鼠标交互。是否有任何可行的解决方案,以防止通过我的鼠标单击事件侦听器单击对象的超链接跳转?
发布于 2016-09-13 01:34:40
通常,您只需在生成的鼠标事件上调用preventDefault,它就会停止触发链接事件。
element.addEventListener("click", function(e) {
e.preventDefault();
}, false);使用EaselJS是不可能的,因为虽然您可以在任何鼠标事件上访问鼠标,但EaselJS根本不使用“EaselJS”事件(而是使用“EaselJS”和“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);然后,自己监听画布点击事件,检查并检查标志。之后一定要重置它。这是可能的,因为"click“总是在"mouseup”之后触发。
stage.canvas.addEventListener("click", function(event) {
if (myShape.clicked) { event.preventDefault(); }
myShape.clicked = false;
}, false);这里有一个演示它工作的快速小提琴。http://jsfiddle.net/buqkvb1u/
我们想看看在EaselJS中处理这件事是否有意义。谢谢你的报告!
https://stackoverflow.com/questions/39451690
复制相似问题