如何使用JavaScript在移动Safari中清除文本选择?

4
有没有一种编程方式可以在移动版Safari中清除选择框?我尝试了用JavaScript清除文本选择问题的回答中建议的window.getSelection().removeAllRanges(),虽然Selection对象被重置为未选定任何内容(类型为“None”,isCollapsed为true,rangeCount为0,anchorNode/focusNode/baseNode/extentNode都是null),但选择框仍然显示在屏幕上:

‘用JavaScript清除文本选择’问题的Stack Overflow截图,显示选择框仍然显示在屏幕上

我还尝试了window.getSelection().collapse(),但这并没有起作用。
我正在测试iOS 7.1模拟器以及运行iOS 7.1.1的iPad上的Mobile Safari。

你解决这个问题了吗?我非常需要它。请帮忙使用JavaScript/jquery来消除iPad上的选择高亮显示。 - Khaleel
1
@Khaleel:不好意思,我没有。但是我发现这个问题至少已经两次报告给了苹果公司。请参见:http://www.openradar.me/8707236 - Daniel Trebbien
谢谢你的回复,伙计。 - Khaleel
3个回答

2

自2010年以来,这是移动Safari已知的一个bug!http://www.openradar.me/8707236

现在是2018年,这个问题仍然存在。(iOS 10.2.2)

在不需要的区域中,删除event.preventDefault()有所帮助。


0

一种可能性是快速添加和删除父元素的user-select CSS类,以禁用和启用用户选择。

例如,

parent = getSelection().anchorNode.parentNode
parent.style.userSelect = "none"
setTimeout(()=>parent.style.userSelect = <default>, 100)

这对你有用吗?我刚在iOS 11.1模拟器中尝试了一下,它既没有通过视觉方式清除选择,也没有通过window.getSelection()清除。此外,在移动Safari中,user-select似乎需要使用“-webkit”前缀。 - Daniel Trebbien
第一次选择+取消选择时它不起作用,但之后每次都可以。行为很奇怪,但我对苹果的期望不高。 - RodericDay

0

我遇到了完全相同的问题,而在我的情况下,产生影响的是删除

event.preventDefault();

从 "取消选择" 点击事件的处理程序中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接