window.getSelection不工作在IE11中不起作用

时间:2016-02-02 19:32:54

标签: javascript internet-explorer

我们开始在IE11中测试我们的应用程序,并注意到window.getSelection()没有在IE11中进行选择。我没有看到IE11中不支持此属性的任何地方,并且根据我的理解window.getSelection应该适用于所有IE版本的9。

还有其他人遇到过这个问题吗?我在这里错过了什么吗?

我创建了以下示例,该示例在IE旧版本和Chrome版本中可以正常使用,但在IE11中却没有。

$('#selectButton').on('click', function() {
    $('#name').select();
    var sel = window.getSelection();
    alert("Slected value in text area : " + sel);

  }

);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name='selectAll' id='selectAll'>
  <textarea id='name' name='name'>Sample Value</textarea>
  <br>
  <input type='button' value='Click Me' id='selectButton' />
</form>

更新 - 在进一步调查中,我已经找到了windows.getSelection()确实存在于IE 11中,但当所选文本位于文本区域等输入字段内时,它将无法工作。我也知道FF曾经有过类似的错误。此时我不确定这是IE中的错误还是预期的行为。

3 个答案:

答案 0 :(得分:1)

您没有在选择中收到文字,因为您没有选择任何内容。

textarea等互动元素有自己的选择模型,getSelection方法不能用于从这些元素中进行选择。这也代表了Firefox。

要在IE和FF中修复此问题,请使用HTMLInputElement API

&#13;
&#13;
$('#selectButton').on('click', function() {
    var area = $('#name')[0],
        sel;
    area.select();
    sel = area.value.substring(
    	area.selectionStart,
        area.selectionEnd
    );
    alert("Selected value in text area : " + sel);
  }
);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name='selectAll' id='selectAll'>
  <textarea id='name' name='name'>Sample Value</textarea>
  <br>
  <input type='button' value='Click Me' id='selectButton' />
</form>
&#13;
&#13;
&#13;

此外,在FF中,内容可编辑元素也可以部分利用HTMLInputElement API,但不仅限于此。

答案 1 :(得分:0)

我相信答案在https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection

页面上

page的浏览器兼容性部分中,仅列出了Internet Explorer的第9版。根据Mozilla网站上的其他页面,它会有&#34;是&#34;如果在所有版本的IE中都支持Internet Explorer浏览器兼容性,则列出。

答案 2 :(得分:0)

这似乎是IE 11的一个问题。根据MS,这已在他们的新浏览器&#39; Microsoft Edge&#39;中得到修复。但不会在IE 11中修复。

MS Bug Link