我一直不明白为什么这种行为会发生在safari上。当我输入一些文本时,我试图获得选择,为此我使用了window.getSelection(),它在火狐,Chrome,Opera等浏览器上运行得很好,给了我一些类似的东西:
Selection {}
anchorNode: text
anchorOffset: 14
baseNode: text
baseOffset: 14
extentNode: text
extentOffset: 14
focusNode: text
focusOffset: 14
isCollapsed: true
rangeCount: 1
type: "Caret"
__proto__: Selection然而,在safari9上,当我做完全相同的事情时,结果将是:
Selection
anchorNode: null
anchorOffset: 0
baseNode: null
baseOffset: 0
extentNode: null
extentOffset: 0
focusNode: null
focusOffset: 0
isCollapsed: true
rangeCount: 0
type: "None"
__proto__: SelectionPrototype我想知道这是不是我做错了什么?如果它确实是一个bug,或者它不工作,有没有可能的变通方法?或者另一种方法来获得在大多数浏览器上都能工作的相同信息?
发布于 2016-05-06 05:24:38
当我处理一个可内容编辑的div时,我遇到了一个类似的问题,似乎safari默认将user select设置为none,这使得用户无法选择任何东西。我做到了
[contenteditable] {
-webkit-user-select: auto;
user-select: all;
}您可以尝试将[contenteditble]替换为input或其他css元素。
发布于 2018-09-24 18:13:09
更新
我找到了一个干净的解决方案:看看这个:https://github.com/megahertz/jquery.get-word-by-event
它使用click事件对象(我认为比window.getSelection更干净):
var range = document.caretRangeFromPoint(event.clientX, event.clientY);它在iOS 12上运行得很好。
旧POST
我只在iOS12上遇到了同样的问题(不是mater -webkit-user-select)
我设法通过向Div容器添加: contentEditable="true“让它再次工作,
但是不幸的是,键盘出现了,内容变成了可编辑的!(这几乎是意料之中的…)
我还在寻找一个变通的方法@galart,你发现什么了吗?
https://stackoverflow.com/questions/35281283
复制相似问题