iPadOS 15 Safari on.('touchend') 问题

iPadOS 15 Safari on.('touchend') issues

在为 iPadOS 14 中的 Safari 编码的 PWA 中,我使用了一个简单的侦听器来在单击按钮时显示弹出窗口。虽然这在 iPadOS 14.6 中运行良好,但在 iPadOS 15.0 中却没有相同的代码。

侦听器“touchend”导致弹出窗口仅显示一微秒并再次关闭。当仅使用侦听器“单击”时,相同的操作就可以正常工作。但是“touchend”这个动作要直观得多。

$('.popup').on('touchend click', function(e) {
    e.preventDefault();
    $('#popup-content').toggleClass('d-flex d-none');
});

此外,当触摸任何按钮 >0.5 秒时,会显示一个空的小 window(标注)。在 iPadOS 14 中,可以通过简单的 CSS:

来阻止这种行为
-webkit-user-select: none;
user-select: none;
-webkit-touch-callout: none;

如何在最新的 iPadOS 15 中防止这两种行为?

我找到的简单解决方案是将带有 preventDefault() 的“touchstart”侦听器添加到同一按钮:

$('.popup').on('touchstart', function(e) {
    e.preventDefault();
});

这两个操作再次与 iPadOS 14 中的行为相同。