【发布时间】:2015-10-19 18:01:39
【问题描述】:
我想在我的网页上选择某个范围。如果元素被隐藏,IE (Internet Explorer) 和 Edge 会出错。如何在隐藏元素上向文档添加选择?
示例
<html>
<head>
<meta name="robots" content="noindex">
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<style id="jsbin-css">
#d2{
display:none;
}
</style>
</head>
<body>
<div id="d1">div1</div>
<div id="d2">div2</div>
<div id="d3">div3</div>
<a onclick="doSel()" href="javascript:void(0)">click me:)</a>
<script id="jsbin-javascript">
function doSel(){
var element = $("#d2").contents()[0];
var myRange = createRange(element,1, element,2);
console.log(myRange);
document.getSelection().removeAllRanges();
document.getSelection().addRange(myRange);
}
function createRange(startContainer, startOffset, endContainer, endOffset){
var rangeObj = document.createRange ();
rangeObj.setStart (startContainer, startOffset);
rangeObj.setEnd (endContainer, endOffset);
return rangeObj;
}
</script>
</body>
</html>
在这个页面中,我在 Firefox 和 Chrome 的 div#d2 中选择了“i”,但 IE 给了我错误unspecified error,Edge 给了我Could not complete the operation due to error 800a025e.。这些错误在这一行被抛出:document.getSelection().addRange(myRange);
如何解决问题并在 IE 和 Edge 中为我的文档选择添加范围?
【问题讨论】:
-
@mplungjan 我搜索了一下,但没有找到任何有用的答案。
removeAllRanges()的答案在我的情况下不起作用。这就是我问的原因:)
标签: javascript html internet-explorer range microsoft-edge