如何从IE11中的用户选择中获取TextRange对象?

时间:2014-10-23 04:05:14

标签: javascript internet-explorer

我正在努力重现一些在Internet Explorer 10及更早版本中运行但在版本11中不能运行的代码:

JSFiddle演示:http://jsfiddle.net/tala/jqs5y0eh/

var button = document.getElementById('boldButton');
button.addEventListener("click", function() {
    document.getElementById('text').focus();
    if (sel = document.selection) {
        range = sel.createRange();
        if (!range.text) {
            range.expand('word');
        }
    document.execCommand('bold', false, null);
    }
});

当IE控制台切换到模拟版本10时,此代码可以正常工作。

我知道不再支持selection,所以我尝试用window.getSelection()替换它。使用旧的选择对象,您可以调用createRange()来获取TextRange对象,该对象可以访问 expand 等方法。

但是,使用getSelection没有createRange()方法。我试过getRangeAt()

if (sel = window.getSelection()) {
    range = sel.getRangeAt(0);

...但在这种情况下,返回的范围对象不是TextRange对象,也不实现expand方法。

有关如何更改此代码以在IE 11中工作的任何想法?

0 个答案:

没有答案