gpt4 book ai didi

JavaScript 范围出错

转载 作者:行者123 更新时间:2023-11-30 23:51:25 25 4
gpt4 key购买 nike

下面的代码在 Firefox 中给了我一个非常奇怪的错误:

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.createRangewindow.getSelection 函数似乎无法在此环境中工作。

怎么样:

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 元素的文本。您需要摆弄端点才能使其仅选择该范围的一部分。

关于JavaScript 范围出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1426815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com