JavaScript范围出错 [英] JavaScript ranging gone wrong
问题描述
以下代码使我在Firefox中出现了一个非常奇怪的错误:
The following code gives me a really weird error in Firefox:
错误:未捕获的异常: [例外...索引或大小为 负数或大于允许值 金额"代码:"1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)" 位置:"file:///G:/test.html行: 13]
Error: uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount" code: "1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)" location: "file:///G:/test.html Line: 13"]
<html>
<head>
<title>test</title>
<script>
function xxx() {
var myList = document.getElementsByTagName("div");
var range = document.createRange();
var start = myList[0];
var end = myList[0];
range.setStart(start, 1); // Edit: this is (presumably) line 13
range.setEnd(end, 3);
window.getSelection().addRange(range);
}
</script>
</head>
<body onload="xxx();">
<div>abcddasdsadasda</div>
<div>2312321</div>
</body>
</html>
我在做什么错了?
谢谢.
推荐答案
您需要扩展功能xxx以支持IE,而目前它尚不支持. document.createRange
和window.getSelection
函数在此环境中似乎不起作用.
You need to expand function xxx to support IE, which it currently doesn't. The document.createRange
and window.getSelection
functions do not appear to work within this environment.
怎么样:
function xxx()
{
var myList = document.getElementsByTagName("div");
if(window.getSelection)
{
var range = document.createRange();
var start = myList[0];
var end = myList[0];
range.setStart(start, 0);
range.setEnd(end, 1);
window.getSelection().addRange(range);
}
else
if(document.selection)
{
document.selection.empty();
var txt = document.body.createTextRange();
txt.moveToElementText(myList[0]);
txt.setEndPoint("EndToEnd", txt);
var start;
txt.moveStart('character', start);
if (length + start > myList[0].innerHTML.length)
{
length = myList[0].innerHTML.length - start;
}
txt.moveEnd('character', -(myList[0].innerHTML.length - start - length));
txt.select();
}
}
代码将选择整个DIV元素的文本.您需要弄乱端点才能使它仅选择该范围的一部分.
The code will select the entire DIV element's text. You'll need to fiddle with the endpoints to get this to select only a portion of this range.
这篇关于JavaScript范围出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!