首页 > 解决方案 > 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 是未注释掉时正在运行的那个。

是什么原因造成的?

标签: androidgoogle-chromeonclicktouch-eventpreventdefault

解决方案


这是因为 touchstart 阻止了点击事件。您可以阻止 touchmove 来阻止链接。请参阅相关问题 -为什么在为 touchstart 事件调用 preventDefault() 时会抑制 onclick 事件?


推荐阅读