e.PreventDefault() 和 e.stopPropogation() 在平板电脑和移动设备上不起作用

e.PreventDefault() & e.stopPropogation() not working on tablet & mobile

本文关键字:不起作用 PreventDefault stopPropogation 平板电脑 移动      更新时间:2023-09-26

我在js文件中有以下代码,可以在所有桌面浏览器上运行良好,但在以下平板电脑和手机上则不行

  • 三星S4(chrome和默认浏览器)
  • iPhone 4S(chrome和safari)

在ipad air/mini(使用chrome和safari)上,它可以正常工作在HTC 1上(使用chrome和默认),它可以正常工作

有人对此有任何想法吗? - 它似乎非常间歇性,这令人沮丧

  var clicked = false;
    $('header > div > nav > ul > li').first().find('a').on("click", function (e) {
        if (clicked === false) {
            clicked = true;
            return true;
        } else {
            e.preventDefault();
            e.stopPropagation();
            return false;
        }
    });

该代码基本上是在第一次点击后禁用锚链接单击事件(当用户单击页面时重新加载 - 在 href 中设置),并在浏览器再次呈现页面时重新启用。

代码已经发展到你在上面看到的..我最初只是在 else 块中e.preventDefault();,在桌面测试中运行良好,直到我击中移动设备。

移动浏览器没有点击事件。您需要使用touchstart或touchend。

$(...).on("click touchstart", function (e) {

应该做这个技巧