Cordova/Android on click/tap/vclick/touchstart 不工作

Posted

技术标签:

【中文标题】Cordova/Android on click/tap/vclick/touchstart 不工作【英文标题】:Cordova/Android on click/tap/vclick/touchstart not working 【发布时间】:2016-08-27 08:12:27 【问题描述】:

注意:以下问题仅发生在 4.4.2 以上的 Android 版本上(据我所知)


TL;DR 按钮附有 click/tap/vclick/touchstart,在我的 cordova 应用程序(仅限 android)中似乎只能部分工作(10-30% 的时间)。

我正在尝试为 ios/android/windows 开发一个混合应用程序。在应用程序中,我会有偶尔需要触发某些操作的按钮。

一般我会使用.on('click', function() ... );,但我了解到click 并不能真正与移动设备配合使用。

我尝试将click 更改为vclicktaptouchstart。但似乎没有什么能触发我的点击事件。

接下来我尝试查看是否有任何 css 阻止了我的触发器,但没有一致的。

问题在于,当我在控制台中应用以下代码时,它有时会起作用(并非总是如此):

$('.anyElement').on('tap', function()
  console.log("tapped");
);

我还尝试了以下方法,因为我认为绑定以某种方式搞砸了:

$('.anyElement').off().on('tap', function()
  console.log("tapped");
);

所以目前我有点不知道该去哪里找了。如果有办法让我弄清楚为什么我的东西没有被触发,那就太好了!

【问题讨论】:

【参考方案1】:

在英特尔 xdk 上的科尔多瓦 jquery 应用程序上遇到了同样的问题,为我解决了这个问题,至少现在是在我的 index.html 中评论“fastclick.min.js”。似乎 fastclick.min.js 是导致 android 问题的原因,因为它在 IOS 上运行,请查看http://community.phonegap.com/nitobi/topics/simple-js-events-like-onclick-are-not-working-on-devices 他还通过删除一些冲突的 js 来解决它,在他的情况下为“smoothstate.js”。我仍在尝试找出更好的解决方法,如果它存在的话

【讨论】:

很遗憾我没有使用 fastclick 库。但是,我确实尝试检查其他库并对其进行评论,但对我来说没有任何改变。这是我正在使用的库的快速摘要:cordova.js、jquery-1.8.2.min.js、jquery.mobile-1.3.0.min.js、jquery.event.drag-2.2.js、jquery .mobile.simpledialog2.min.js、jQMProgressBar.js、slick.core.js、slick.grid.js、slick.dataview.js、slick.pager.js、toastr.min.js、moment.min.js、下划线.min.js、data-selector.js 和 statusbar.js

以上是关于Cordova/Android on click/tap/vclick/touchstart 不工作的主要内容,如果未能解决你的问题,请参考以下文章

.on('click') 与 .click() 之间的区别

.on('click') 与 .click() 之间的区别

click away 和click on

点击事件click和.on('click') 两者之间的区别

在 jQuery 1.7.2 中 on("click") 和 on("click.randomText") 有啥区别?

Click on 与click有区别吗?