JavaScript范围出错 [英] JavaScript ranging gone wrong

查看:60
本文介绍了JavaScript范围出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码使我在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.createRangewindow.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆