gpt4 book ai didi

javascript - 从 IE11 中的选择创建 TextSelection

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:11 32 4
gpt4 key购买 nike

我正在尝试修复 IE11 中的应用程序,但我陷入了这个错误:在旧版本的 IE 中,有一个简单的 selection object。但它在 IE11 中已被弃用。 MSDN 页面提供使用 getSelection 而不是那个,但它是不一样的。我需要创建一个 TextRange根据选择,在旧 API 中有一个简单的解决方案:

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

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

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

它的问题:如果您选择扔掉其中一个红框,它会移除该框。

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

解决方案:

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

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

更新 2:

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

最佳答案

我的 Rangy库具有将 DOM 兼容范围转换为 IE 的代码 TextRange作为在 IE <= 8 中提供 DOM 范围和选择支持的一部分。最新版本在选择对象上显式公开此转换:

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

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

另一种选择是使用 Rangy 的 TextRange module ,除其他外,它向 Rangy 的范围对象添加了一个类似 IE 的 findText() 方法,以及 class applier module做突出显示。这适用于所有主流浏览器。

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

我不确定当您突出显示文本并按下某个键时在您的演示中会发生什么,所以我没有尝试对此做任何事情。

关于javascript - 从 IE11 中的选择创建 TextSelection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958043/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com