我在香草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是未注释掉时正在运行的那个。
可能是什么原因造成的?
似乎默认情况下,触摸事件是被动的。在这种情况下,event.preventDefault()将中断其他侦听器。在开发人员控制台中应该有关于此的错误。要解决此问题,只需将被动选项更改为false。link.addEventListener("touchstart", function (event) {
event.preventDefault();
}, { passive: false });
您可以在https://developers.google.com/web/updates/2017/01/scrolling-intervention上阅读。