stopPropagation()并不能阻止,因为它是 capture 而不是 bubble , capture 的顺序是先父后子、自上而下的。
1
jmyz0455 2017-04-01 20:09:25 +08:00
return false;
但是不建议总是把事件设置在捕获阶段触发,然后还不能移除监听器,思路再理清一下,看能不能有别的做法。 |
2
zhujinliang 2017-04-01 20:14:54 +08:00 via iPhone
做个 opacity 0.01 的东西罩在页面上面 XD
|
3
ferrum 2017-04-01 20:41:50 +08:00
不是很明白要什么样的效果,是希望点击后能 emit 个 open 事件,但这个 click 不在其子元素上触发吗?
至于 1L 说的 return false ,其实在 jQuery 里面才是等于 event.preventDefault() & event.stopPropagation(),但在原生的并没有什么作用。不过正常情况下真的极少会更改事件的捕获方式。 Anyway, CSS 有个 pointer-events: none;属性,可以阻止元素响应 click 事件,或许会有用。 |
6
lslqtz 2017-04-02 12:23:57 +08:00
@param 很好的问题,我找了找没找到方案。
网上说是 js 无法阻止页面关闭。 this.close; function() { [native code] } var close='a'; undefined this.close(); VM30633:2 Uncaught TypeError: this.close is not a function(…)(anonymous function) @ VM30633:2InjectedScript._evaluateOn @ (program):878InjectedScript._evaluateAndWrap @ (program):811InjectedScript.evaluate @ (program):667 this.close; "a" |
8
MinonHeart 2017-04-02 13:32:22 +08:00 via iPhone
在 close 函数内做判断
|
9
param OP @MinonHeart close 函数不是我写的,在一个第三方库里面。最好不用改库,看来唯一的方法就是移除监听器了?
|
10
MinonHeart 2017-04-02 13:38:17 +08:00 via iPhone
@param 外面再包一层
|
11
param OP @MinonHeart document 的外面? document 不是最外了吗?
|
12
MinonHeart 2017-04-02 13:42:00 +08:00 via iPhone
@param ((((;゚Д゚))))))) 你自己包一层作为 click 事件的函数
|