【发布时间】:2022-01-01 21:05:11
【问题描述】:
我正在尝试查看是否有一种方法可以为 iOS Safari 中的链接调用原生上下文菜单,而无需用户长按。
(例如,如果您在 iPhone 上打开 nytimes.com,然后长按第一个标题打开系统上下文菜单,它将包含:打开链接、在新标签中打开、复制链接等)
所以我们想在我们的网站上调用 THAT,而不需要用户按下 500 毫秒。理想情况下,用户可以简单地点击一个按钮,但任何长按的替代方法都是可以接受的(双击、滑动、两指点击等)。
在带有 swift/obj-c 的本机应用程序中,这种效果绝对是可能的。那不是我要找的。在 iOS 上的 Safari 中打开时,我正试图在我们的网站上实现这一点。
我已经试过了:
1——看看是否有办法减少长按时间要求。虽然可以使用-webkit-touch-callout 完全禁用,但我们发现没有办法减少时间。互联网上提到可变长按时间延迟阈值的解决方案都利用第三方库来创建非本地长按行为,例如按下按钮使其“抖动”。
2——看看是否有办法忽略touchend事件——换句话说,用户将点击(~10ms),这将启动一个计时器,490ms后标注菜单出现,在用户很久之后已经移开了她的手指。这也没有运气,但似乎是最有前途的方法。
3——我们还尝试了其他不太理想的解决方案,例如,用户双击——首先是透明元素,然后是主按钮。也没有运气。
任何建议(或完整的解决方案!)将不胜感激!
【问题讨论】:
标签: javascript ios safari contextmenu touch-event