我正在尝试修复 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/sycqeev2/
我不确定当您突出显示文本并按下某个键时,演示中会发生什么,因此我没有尝试对此执行任何操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)