首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >createjs阻止超链接交互

问createjs阻止超链接交互
EN

Stack Overflow用户
提问于 2016-09-12 21:38:44
回答 1查看 80关注 0票数 0

在由超链接包装的简单应用程序画布中。一些放置在画布舞台上的对象在click事件上有特殊的鼠标交互。是否有任何可行的解决方案,以防止通过我的鼠标单击事件侦听器单击对象的超链接跳转?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 01:34:40

通常,您只需在生成的鼠标事件上调用preventDefault,它就会停止触发链接事件。

代码语言:javascript
复制
element.addEventListener("click", function(e) { 
    e.preventDefault(); 
}, false);

使用EaselJS是不可能的,因为虽然您可以在任何鼠标事件上访问鼠标,但EaselJS根本不使用“EaselJS”事件(而是使用“EaselJS”和“mouseup”的组合)。因此,阻止单击事件上的默认操作不会起到任何作用。

不起作用

代码语言:javascript
复制
// You would expect this to work.
myShape.on("click", function(e) {
    e.nativeEvent.preventDefault(); // Nothing. This cancels a "mouseup" instead.
});

解决方法

然而,你可以很容易地解决这个问题。每次单击时,都会在单击的项(或在应用程序中设置它的任何位置)上设置一个标志。

代码语言:javascript
复制
myShape.addEventListener("click", function(event) {
  myShape.clicked = true;
}, false);

然后,自己监听画布点击事件,检查并检查标志。之后一定要重置它。这是可能的,因为"click“总是在"mouseup”之后触发。

代码语言:javascript
复制
stage.canvas.addEventListener("click", function(event) {
     if (myShape.clicked) { event.preventDefault(); }
     myShape.clicked = false;
}, false);

这里有一个演示它工作的快速小提琴。http://jsfiddle.net/buqkvb1u/

我们想看看在EaselJS中处理这件事是否有意义。谢谢你的报告!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39451690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档