javascript - createjs防止超链接交互

标签 javascript event-handling dom-events createjs easeljs

在我的简单应用程序 Canvas 中,由超链接包裹。放置在 Canvas 舞台上的某些对象在 click 事件上具有特殊的鼠标交互。是否有任何可能的解决方案可以通过使用鼠标单击事件监听器单击对象来防止超链接跳转?

最佳答案

通常,您只需在生成的鼠标事件上调用 preventDefault 即可,它将阻止链接事件触发。

element.addEventListener("click", function(e) { 
    e.preventDefault(); 
}, false);

使用 EaselJS 是不可能的,因为尽管您可以访问任何 EaselJS 鼠标事件上的 nativeEvent,但 EaselJS 根本不使用“click”事件(而是使用“mousedown”的组合”和“鼠标悬停”)。因此,阻止点击事件的默认设置不会起到任何作用。

不起作用

// 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”之后触发

stage.canvas.addEventListener("click", function(event) {
     if (myShape.clicked) { event.preventDefault(); }
     myShape.clicked = false;
}, false);

这是一个显示其工作原理的快速 fiddle 。 http://jsfiddle.net/buqkvb1u/

我们正在寻找在 EaselJS 中处理这是否有意义。感谢您的报告!

关于javascript - createjs防止超链接交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39451690/

相关文章:

javascript - ANTD 表 getColumnSearchProps 被嵌套对象破坏

javascript 排序异步函数

java - 如何实现 JTable 单元格更改的事件处理程序

javascript - 从事件处理程序写入 WriteStream

javascript - DOM 级别 1 发生了什么?

javascript - 复选框勾选事件监听器

javascript - 简单的表单验证。面向对象

javascript - 在执行第一行之前是否需要解释每一行 JavaScript?

javascript - react-redux 错误 : Actions must be plain objects. 使用自定义中间件进行异步操作

c# - 在 Linux 上为目录中的文件编写事件监听器