event.preventDefault()停止android上chrome中的所有javascript

问题描述 投票:0回答:1

我在香草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苹果浏览器,ipad苹果浏览器)中正​​常工作)

但是android上的chrome的行为有所不同

单击链接时,下拉菜单上的那些preventDefault语句不会出现。

我已经通过注释掉preventDefaults进行了测试,并显示了下拉列表。

chrome开发者工具显示,第一个preventDefault是未注释掉时正在运行的那个。

可能是什么原因造成的?

android google-chrome onclick touch-event preventdefault
1个回答
0
投票

似乎默认情况下,触摸事件是被动的。在这种情况下,event.preventDefault()将中断其他侦听器。在开发人员控制台中应该有关于此的错误。要解决此问题,只需将被动选项更改为false。link.addEventListener("touchstart", function (event) { event.preventDefault(); }, { passive: false });您可以在https://developers.google.com/web/updates/2017/01/scrolling-intervention上阅读。

© www.soinside.com 2019 - 2024. All rights reserved.