首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TextSelection中的选择创建IE11

从TextSelection中的选择创建IE11
EN

Stack Overflow用户
提问于 2014-07-25 14:26:35
回答 1查看 3K关注 0票数 4

我试图在IE11中修复一个应用程序,我陷入了这个错误:在较早的IE版本中,它是一个简单的选择对象,但在IE11中被废弃了。MSDN页面提供了使用getSelection来代替它,但是它不是相同的。我需要根据选择创建一个TextRange,在旧的API中有一个简单的解决方案:

代码语言:javascript
复制
// there is a TextRange object what I need
var textRange = document.selection.createRange();

新的HTMLSelection对象没有createRange()方法,我也没有找到任何合适的解决方案,也就是没有修改DOM。

我尝试这样做:http://jsfiddle.net/p4Lu4/1/ (用法:选择一些文本并按任意键。)

它的问题是:如果您选择抛出其中一个红色框,它将删除该框。

有谁知道更好的解决办法吗?

解决方案:

我想我找到了解决办法。这并不是最好和最美好的,但它对我是有用的:我可以从选择中创建完全相同的TextRange。

http://jsfiddle.net/p4Lu4/4/

更新2:

我为此创建了一个模块:https://gist.github.com/festo/50fe800c7369db140a62

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 16:52:59

我的兰迪库有代码将DOM兼容的范围转换为IE TextRange,作为在IE <= 8中提供DOM范围和选择支持的一部分。

代码语言:javascript
复制
var textRange = rangy.getSelection().getNativeTextRange();

注意,范围选择的getNativeTextRange()方法仅存在于IE中。

另一种选择是使用Rangy的TextRange模块 (其中包括向Rangy的range对象添加一个类似IE的findText()方法),以及用于高亮显示的类应用程序模块。这将在所有主要浏览器中工作。

演示:http://jsfiddle.net/sycqeev2/

当你高亮显示文本并按下键时,我不知道在你的演示中会发生什么,所以我没有尝试用它做任何事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24958043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档