Internet Explorer эквивалентный range.startOffset - PullRequest
1 голос
/ 27 января 2011

Как получить функциональность, эквивалентную range.startOffset в Internet Explorer 8 и ниже?

Т.е., мне нужна функция, которую я могу вызвать в диапазоне, который сообщит мне, сколько символов в его контейнере начинается диапазон.

Ответы [ 2 ]

5 голосов
/ 27 января 2011

Если вы хотите реализацию DOM Range в IE, вы можете использовать мою библиотеку Rangy: http://code.google.com/p/rangy/.

var range = rangy.getSelection().getRangeAt(0);
alert(range.startOffset);
1 голос
/ 27 января 2011

Вот пример кода, смотрите комментарии внутри:

<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function fx()
{  
    //create a range of selection
  var rng = document.selection.createRange();
    //if nothing is selected return null
  if(rng.text=='')return null;
    //create a second range of selection
  var rng2 = document.selection.createRange();
    //let the 2nd range  encompass the whole element
  rng2.moveToElementText(rng.parentElement())
    //move the end-point of the 2nd range to the start-point of the 1st range
  rng2.setEndPoint('EndToStart', rng);
    //return the length of the text in the 2nd range
  return(rng2.text.length);
}
//-->
</script>
</head>
<body>
<input type="button" onclick="alert(fx())" value="select some text below and then click me">
<p>1234<b style="color:red">5678</i>90</p>
</body>
</html>
...