Cordova打包后安卓应用图片点击事件无效怎么办?
大家好,我用Cordova开发了一个图片列表页面,图片能正常显示但在安卓真机上点击没反应,这是为什么啊?
我在HTML里用标签展示图片,给容器绑定了
click事件。在Chrome调试时点击能触发控制台日志,但打包成apk安装后完全没反应。已经试过:
1. 检查图片路径是否正确(显示正常应该没问题)
2. 把事件改成touchstart也没用
3. 确保 Cordova 的deviceready事件触发后再绑定事件
这是我的代码片段:
<div class="photo-item">
<img src="assets/img/test.jpg" alt="">
</div>
document.addEventListener('deviceready', () => {
document.querySelectorAll('.photo-item').forEach(item => {
item.addEventListener('click', () => console.log('clicked!'));
});
});
还有在config.xml里添加了这些权限配置:
<allow-navigation href="*" rel="external nofollow" rel="external nofollow" />
<allow-intent href="*" rel="external nofollow" rel="external nofollow" />
<access origin="*" />
难道是事件冒泡被拦截了?或者需要特别配置?
你已经监听了
deviceready,也尝试过touchstart,说明基本功没问题。但.photo-item是一个容器,里面包含![]()
,这种结构在某些安卓 WebView 下,点击事件会被“吞掉”,尤其是子元素是图片时,可能会阻止父元素的点击触发。一个通用的做法是:给
.photo-item加上cursor: pointer或者style="-webkit-tap-highlight-color: rgba(0,0,0,0);",有时候能唤醒点击行为。另外,我建议你把事件监听目标换成
document.body,然后通过事件委托判断目标元素。有些安卓 WebView 对querySelectorAll动态绑定事件不太友好,特别是和某些插件或硬件加速冲突时。你可以试试下面这段代码:
如果你用了 FastClick 或别的点击优化库,也要确认是否冲突。这类问题多数是事件流被中断或者根本没有触发,用事件委托是更稳妥的方式。
.photo-item加个样式cursor: pointer;,同时把事件改成touchend。如果还不行,检查一下是否有其他插件或框架干扰了事件绑定。