从 IE11 中的选择创建 TextSelection

2023-12-03

我正在尝试修复 IE11 中的应用程序,但我陷入了这个错误:在旧版本的 IE 中,有一个简单的选择对象但在 IE11 中已弃用。 MSDN 页面提供使用 getSelection 来代替它,但它不一样。我需要创建一个文本范围根据选择,在旧 API 中有一个简单的解决方案:

// there is a TextRange object what I need
var textRange = document.selection.createRange();

The new HTML选择object没有createRange()方法,我没有找到任何合适的解决方案,什么是不修改DOM。

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

它的问题是:如果您选择扔掉其中一个红色盒子,它将删除该盒子。

谁能知道更好的解决方案吗?

解决方案:

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

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

更新2:

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


My Rangy库包含将 DOM 兼容范围转换为 IE 的代码文本范围作为在 IE

var textRange = rangy.getSelection().getNativeTextRange();

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

另一种选择是使用 Rangy 的文本范围模块,其中添加了一个类似 IE 的findText()Rangy 范围对象的方法,以及类应用程序模块进行突出显示。这适用于所有主要浏览器。

Demo: http://jsfiddle.net/sycqeev​​2/

我不确定当您突出显示文本并按下某个键时,演示中会发生什么,因此我没有尝试对此执行任何操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 IE11 中的选择创建 TextSelection 的相关文章

随机推荐