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

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 关注 分享

要回复文章请先登录注册

x***@163.com

x***@163.com

检查一下dom所在的标签里是否包含有多个 mui-content
2016-08-06 21:55
darknights

darknights

我也遇到了这个问题 问了一下前辈 其实可以在内部设置一个setTimeout函数防止短事件内触发两次
var count = 0;
var flag = false;
$(select).on('tap', function () {
if (!flag) {
flag = true;
count++;
console.log(count);
mui('#pageSlider').slider().gotoItem(count);
setTimeout(function () {
flag = false;
}, 300);
}
});
在mui和zepto上都是可以使用的 不会冲突
2016-07-07 10:36
风杰

风杰

回复 amye :
function test()
{
tipPageFromThis();//需执行的代码块
document.getElementById('idname').removeEventListener('tap', test, false);
}
document.getElementById('idname').addEventListener('tap', test, false);
2016-05-19 15:55
DCloud_UNI_FXY

DCloud_UNI_FXY

回复 风杰 :
发测试工程
2016-05-16 22:56
风杰

风杰

回复 DCloud_UNI_FXY :
关键我应该怎样解决呢?
2016-05-16 22:46
amye

amye

回复 风杰 :
你好,我也遇到了同样的问题,请问你解决了么?求指点
2016-05-16 20:01
DCloud_UNI_FXY

DCloud_UNI_FXY

回复 风杰 :
发测试工程。你这个问题一般是重复绑定导致的。比如点击一次就绑定了一次。所以导致一次比一次多
2016-05-16 16:43
风杰

风杰

回复 DCloud_UNI_FXY :
我没有使用其他带tap事件的框架,也没有重复引用mui.js,mui.min.js,为什么每执行一次tap事件就比上一次多执行1遍呐?即:点击1次执行1遍,点击第2次执行2遍,点击第3次执行3遍以此类推,这是为什么呢???代码如下:
document.getElementById('idname').addEventListener('tap', function()
{
tipOrderListPage();//跳转到其他页面
});
急需解决,急需知道为什么啊!!!
2016-05-13 16:34
酱m油

酱m油

我也执行了2次,检查了没有重复加载mui.min.js和第三方js
2016-03-02 19:31
三分天下

三分天下

我的也执行了两次,最后发现是加载了两次mui.js
2016-02-16 16:29