android - event.preventDefault() 在 android 上停止 chrome 中的所有 javascript
问题描述
我在 vanilla js 中定义了以下事件侦听器
link.addEventListener("touchstart", function (event) {
event.preventDefault();
});
link.addEventListener("touchend", function (event) {
event.preventDefault();
});
link.addEventListener("click", function (event) {
event.preventDefault();
});
被阻止的事件是页面加载(目标元素是标签)
在其他地方(在不同的 JS 文件中)有代码,当单击目标元素时会出现下拉菜单。
这适用于许多其他浏览器(chrome pc 和 mac、firefox pc、safari mac、edge、IE 11、iphone safari、ipad safari)
但是 android 上的 chrome 表现不同
单击链接时,下拉菜单上的那些 preventDefault 语句不会出现。
我已经通过注释掉 preventDefaults 并出现下拉菜单来测试这一点。
chrome 开发工具显示第一个 preventDefault 是未注释掉时正在运行的那个。
是什么原因造成的?
解决方案
这是因为 touchstart 阻止了点击事件。您可以阻止 touchmove 来阻止链接。请参阅相关问题 -为什么在为 touchstart 事件调用 preventDefault() 时会抑制 onclick 事件?
推荐阅读
- python-3.x - 将变量重要性图导出为图像
- ios - 无法在 UIView 子类和 IBOutlets 之间建立连接?
- react-native - 如何检查远程图像是否发生变化?(Android无限期缓存图片)
- architecture - 如果指令是 c 指令,在这个(nand2tetris)CPU 实现中应该发生什么?
- excel - 识别总行数,然后将值复制并粘贴到行数
- android - 如何使用 HttpURLConnection 为我的 android 应用程序获取以下 url 的内容
- regex - 使用正则表达式而不是唯一值选择行
- python - 用 pandas 构建数据框
- python - 无法发射子弹,程序关闭
- javascript - 如何在 nuxt.js 上从子组件获取父组件的值?