Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从IE11中的用户选择中获取TextRange对象?_Javascript_Internet Explorer - Fatal编程技术网

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

Javascript 如何从IE11中的用户选择中获取TextRange对象?,javascript,internet-explorer,Javascript,Internet Explorer,我正在努力复制一些在Internet Explorer 10及更早版本中可用的代码,但在版本11中不可用: JSFIDLE演示: 当IE控制台切换到模拟版本10时,此代码工作正常 我知道它不再受支持,所以我尝试用window.getSelection()替换它。对于旧的选择对象,您可以调用createRange()来获取TextRange对象,该对象提供了对expand等方法的访问 但是,使用getSelection时,没有createRange()方法。我试过getRangeAt() 。。。但

我正在努力复制一些在Internet Explorer 10及更早版本中可用的代码,但在版本11中不可用:

JSFIDLE演示:

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

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

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

。。。但在本例中,返回的range对象不是TextRange对象,并且不实现expand方法


关于如何修改此代码以在IE11中工作,您有什么想法吗?

在IE11中,您需要使用标准属性和方法:并且,旧API已经过时。谢谢@Teemu。我尝试过使用标准属性/方法,比如你在MDN上引用的那些属性/方法——举个例子:这种方法在FF/Chrome中有效;然而,这些方法在IE11中不起作用
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);
    }
});
if (sel = window.getSelection()) {
    range = sel.getRangeAt(0);