使用 JavaScript (iOS) 检测选定文本上的触摸事件

问题描述

我有一个与使用 JavaScript 的移动浏览器中的文本选择相关的用例(和问题)。我希望用户使用常规文本选择功能选择文档中的文本。当他们通过拖动开始/结束标记来调整所选文本的大小后,他们应该点击选择以确认选择并突出显示它。

我正在使用 selectionchange 事件来检测对选择的更改并更新我对选择的内部表示。这很好用。然后我可以使用下一个 touchstart 事件来确定用户是否触摸了选择以确认它,但这仅适用于 Android(Chrome 和 Firefox),而不适用于 iOS(Safari 和因此所有其他浏览器被迫使用webkit;我拥有一个版本为 12 的物理设备,浏览器堆栈不支持用于跨其他 iOS 版本进行测试的触摸事件)。

当您触摸所选文本时,iOS 似乎无法可靠地触发 touchstart 事件。如果您更改初始选择一次,它会起作用。奇怪的是,如果您将选择更改回原始选择,它就不再起作用了。

我还尝试侦听其他事件(touchendtouchcanceltouchmove 甚至 contextmenu)以检查我是否可以使用其他内容,但没有有用。我还有一个测试脚本,用于在 Codepen 跨设备检查。它从本质上改变了背景颜色以可视化各种事件。

我有几个想法我可以尝试,比如临时添加一个带有按钮角色的跨度来检测初步选择上的“点击/触摸”,或者完全重新设计选择处理以立即使用{ {1}},事后跟踪更改(不太确定这会有多好,因为我会更改 DOM,这可能会影响浏览器的选择)并在有人通过触摸外部取消选择时恢复以前的状态所选文本的一部分 - 但由于我的简单方法在 Chrome 和 Firefox 上运行得如此出色,我想知道我是否也可以让它在 iOS 上运行。

非常感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...