avalon2的ms-on-click指令在iOS 10.0.3的Safari和微信浏览器中绑定非<a>元素不触发事件

代码如下:

<div class="ms-controller" ms-controller="index">
    <div>
        <div ms-on-click="@click" style="background-color: red; height: 200px;">
        </div>
    </div>
    <div>
        <a href="#" ms-on-click="@click">Click</a>
    </div>
</div>

<script>
var vm = avalon.define({
    $id: "index",
    click: function(e) {
        e.preventDefault();
        console.log('trigger click');
    }
});
</script>

结果如下:
点击<a>元素正常触发vm.click方法
点击<div>元素不触发vm.click方法

深入avalon的事件绑定机制,发现是给<html>标签addEventListener监听click事件,然后通过dispatch方法进行事件冒泡触发。
尝试了直接给<html>元素addEventListener监听click事件,同样不触发。
尝试了给<div>元素直接增加onclick事件,可以触发onclick事件,同时也触发了ms-on-click绑定的事件

<div ms-on-click="@click" style="background-color: red; height: 200px;" onclick="console.log(‘trigger click’)">
</div>

有什么解决方案么?PS:我其实知道touchend和tap事件可以解决,只是想深入挖掘click的问题。

阅读 4.8k
2 个回答

同样,今天发现10.0.2也是 a标签加click事件无反应

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进