王锐
王锐
  • 发布:2016-02-02 17:04
  • 更新:2019-09-09 18:04
  • 阅读:20713

MUI的TAP事件在部分手机上会执行2次

分类:MUI

已经验证HBuilder 版本 HBuilder 6.9.2.201601052351

MUI框架的事件tap在很多机器上都会被执行2次,换成click事件问题立即解决。
绝对不是两个窗体或者2次绑定引起的。已经在INSPECT里面调试过了。只有一个窗体实例,元素上也只有1个TAP监听。

我一直要求员工都用MUI的TAP事件。例如用TAP打开一个窗口。造成窗口都要闪烁2次,我原来以为是加速造成,结果发现完全是TAP引起的。。一次偶然,用TAP事件上,绑定了一个plus.nativeUI.alert,结果弹了2次框,我这才发现这个问题。。立即把所有TAP都改成CLICK了,结果所有因2次执行引起的闪烁全部消失。

以上问题不是在全部机器上都出现。。我用自己的NOTE5出现,用一个华为的手机出现。。有些小米手机出现,有些不出现。。未深究TAP的JS代码,有时间多的高人看看有没有更好的解决方案。

0 关注 分享

要回复文章请先登录注册

h***@163.com

h***@163.com

回复 VicCreator :
这个是对的,各位如果遇到相同情况,不妨给当前dom元素和它的父级dom元素都设置一个绝对不可能重复的class试试
2019-09-09 18:04
手写的从前

手写的从前

mui.js 代码 放在 jquery.js 之前
2019-08-30 11:31
8***@qq.com

8***@qq.com

回复 VicCreator :
我就是这个问题,看了你的回答解决了
2018-05-22 17:25
2***@qq.com

2***@qq.com

回复 逗逗水 :
搜索框点击清除图标tap事件,刚开始执行多次。经过研究发现,是搜索框多次获取焦点引起的。解决方案如下:当搜索框失去焦点时,解除tap事件绑定;当获取焦点时,重新绑定tap事件。

var clearSearch =function (){
tab_orderhall = plus.webview.getWebviewById('tab_orderhall.html');
mui.fire(tab_orderhall,'search',{'data':'',});
setTimeout(function() {
searchBox.blur();//搜索框取消焦点,关闭软键盘
}, 300);
return false;//阻止冒泡
}

searchBox.addEventListener('focus', function(e) {
mui(".mui-icon-clear")[0].addEventListener('tap',clearSearch);
searchBox.addEventListener('tap', function(){
document.activeElement.blur();//搜索框取消焦点,关闭软键盘
mui.openWindow({
url: 'search.html',
id: 'search.html',
});
});
});

searchBox.addEventListener("blur",function(e){
mui(".mui-icon-clear")[0].removeEventListener('tap',clearSearch);
},false);
2017-12-11 14:02
w***@163.com

w***@163.com

确实是因为mui.js和mui.min.js的重复引用造成的...
2017-12-07 15:16
w***@163.com

w***@163.com

重复引用mui.js和mui.min.js会出现注册两次事件的情况。
2017-10-06 14:52
逗逗水

逗逗水

回复 8***@qq.com :
你的解决了没
2017-07-27 15:50
逗逗水

逗逗水

为何改成了click,还是点击了两次
2017-07-27 15:39
8***@qq.com

8***@qq.com

为何总是留坑,爬坑需要耗费了多少时间了,你说。
2017-07-22 11:58
1***@qq.com

1***@qq.com

回复 y***@163.com :
怎么改了,求教,我用的on绑定的动态生成的元素
2017-06-30 15:03