Javascript document.getSelection()无法在iOS设备上运行

时间:2012-01-19 06:40:56

标签: javascript ios browser

我一直在为iOS设备构建一个javascript应用程序,它需要能够直接在tap事件下面获取单词,以便可以定义它。 使用以下js代码;

var s = e.browserEvent.currentTarget.getSelection();
s.modify('extend','backward','word');        
var b = s.toString();           
s.modify('extend','forward','word');
var a = s.toString();
s.modify('move','forward','character');
alert(b + a);

并且它适用于浏览器(chrome和safari),但是当在ipad等设备上运行时,getSelection不会返回任何内容。 有人知道如何让它发挥作用吗?

提前干杯!

2 个答案:

答案 0 :(得分:1)

对于那些将来发现这个问题的人。确保您尝试调用getSelection()的元素在其中包含以下内容:

user-select: text;
-webkit-user-select: text;

内容可编辑元素经常出现此问题。

答案 1 :(得分:1)

我仅在iOS 12上有此问题(在iOS 11、10、9上运行良好)

我找到了一个干净的解决方案: 看这个:https://github.com/megahertz/jquery.get-word-by-event

它使用click EVENT对象(比我认为的 window.getSelection 干净):

var range = document.caretRangeFromPoint(event.clientX, event.clientY);

它在iOS 12上运行良好。