我正在尝试使用document.getSelection()在输入html标记中进行选择,但在Internet Explorer 11上不起作用。该功能受支持,但返回的值似乎错误。
我在Chrome和Edge上对其进行了测试,并且运行良好,因此看来该问题与IE11有关。
在Chrome和Edge上,它返回一个选择对象,该对象的值在anchorNode和rangeCount上(不同于0),并在调用toString()函数时显示所选文本。如果什么也没有选择,或者输入为空,但它已被聚焦,则它仍然在anchorNode和rangeCount上具有值,但是toString函数返回一个空字符串。
Chrome浏览器:
https://media.giphy.com/media/mFpXA8uv0GwUEx6Ofu/giphy.gif https://i.postimg.cc/ncnM5QtP/chrome-abc-selection.png
IE11:
https://media.giphy.com/media/mFpXA8uv0GwUEx6Ofu/giphy.gif https://i.postimg.cc/QxSVrx8x/IE11-abc-selection.png
我主要需要getCountion()返回的rangeCount属性的值,因为那我需要调用getRange函数,但是我正在处理它,IE11遇到了问题,我需要使网站兼容所有这些浏览器。
这是Microsoft可以修复的IE11错误,还是我可以实现的解决方法?
答案 0 :(得分:0)
您可以使用HTML DOM元素通过element.selectionStart和element.selectionEnd获取选择索引,然后只需获取元素的值并使用索引对值做子字符串即可。...请参见以下示例
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="myFunction()">Show me My Selection</button>
<input id="myInput" type="text" value="This is my selection"><br>
<script>
myFunction = function(){
let element = document.getElementById("myInput");
alert('The selected text = ' + element.value.substring(element.selectionStart,element.selectionEnd));
}
</script>
</body>
</html>