如何在IE 11中获取Range对象

时间:2014-07-29 09:09:09

标签: javascript html dom internet-explorer-11

我想要

的等效代码
var nbLineStart=textarea.value.substr(0, textarea.selectionStart).split("\n").length - 1;
            var nbLineEnd=textarea.value.substr(0, textarea.selectionEnd).split("\n").length - 1;
    var range = document.selection.createRange();
                try{
                    range.moveToElementText( textarea );
                }catch(e){}
                range.setEndPoint( 'EndToStart', range );
                range.moveStart('character', textarea.selectionStart - nbLineStart);
                range.moveEnd('character', textarea.selectionEnd - nbLineEnd - (textarea.selectionStart - nbLineStart)  );
                range.select();

将成功在IE 11平台上运行。

如果我在IE 11中使用document.getSelection()方法,那么setEndPoint,moveStart和select方法都不可用。

先谢谢。

3 个答案:

答案 0 :(得分:2)

您必须使用window.getSelection()方法获取所选内容

function TestSelection() {
  if (window.getSelection) {  // all browsers, except IE before version 9
    var selectionRange = window.getSelection();                                        
    alert("The text content of the selection:\n" + selectionRange.toString());
  } else {
    if (document.selection.type === "None") {
      alert("No content is selected, or the selected content is not available!");
    } else {
      var textRange = document.selection.createRange();
      alert("The text content of the selection:\n" + textRange.text);
    }
  }
}

请查看此链接以供参考:

Link

答案 1 :(得分:0)

您必须使用window.getSelection方法。

来源:http://msdn.microsoft.com/en-us/library/ie/ff975169(v=vs.85).aspx https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection

var range;    
if (document.selection){
    // IE before version 9
    range = document.selection.createRange();
    ...
} else {
    // IE after version 9
    range = window.getSelection();
    ...
}

答案 2 :(得分:0)

您可以使用window.getSelection()函数。

可以找到一个很好的参考here