Мой XHtml, идентификатор которого отображается для пользователя, будет примерно таким, как показано ниже.
<html iTag="d1e1" version="-//W3C//DTD XHTML 1.1//EN">
<head iTag="d1e3">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title iTag="d1e5">Every document must have a title</title>
</head>
<body iTag="d1e9">
<h1 iTag="d1e11" align="center">Very Important Heading</h1>
<b itag="dle13">Hi. Welcome to
Java world.</b>
<p iTag="d1e15">Since this is just a sample, I won't put much text here.</p>
</body>
</html>
Если пользователь выбирает на экране что-то вроде «в мир Java. С тех пор», поэтому выбор начинаетсябыть позицией «т».Мне нужно рассчитать выбор начинать по отношению к непосредственному родительскому элементу одного, что означает в теге "b" с itag именем "dle13" положение 't'.Точно так же конец выделения находится в теге «p» с именем iTag «dle15». Мне нужен конец выделения по отношению только к этому тегу.
Для этого мы используем приведенный ниже код Java-сценария.
if (document.selection) {
alert("IE");
txt = document.selection.createRange().text;
var range_all = document.body.createTextRange();
if (txt!='' )
{
// Finding start position
range = document.selection.createRange();
range.collapse(true);
startItag = range.parentElement().getAttribute("iTag");
var startParentElement = range.parentElement();
if(startItag == '' || startItag == null)
{
startItag = range.parentElement().parentNode.getAttribute("iTag");
startParentElement = range.parentElement().parentNode;
}
//alert("parentId:" + parentId);
alert("parent node name for start:" + range.parentElement().nodeName);
range_all.moveToElementText(startParentElement);
for (var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start ++)
range_all.moveStart('character', 1);
range = document.selection.createRange();
range.collapse(false);
range_all = document.body.createTextRange();
endItag = range.parentElement().getAttribute("iTag");
var endParentElement = range.parentElement();
if(endItag == '' || endItag == null)
{
endItag = range.parentElement().parentNode.getAttribute("iTag");
endParentElement = range.parentElement().parentNode;
}
alert("parent node name for end:" + range.parentElement().nodeName);
range_all.moveToElementText(endParentElement);
for (var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end ++)
range_all.moveStart('character', 1);
document.getElementById("startIndex").value= sel_start ;
document.getElementById("endIndex").value= sel_end ;
document.getElementById("startItag").value= startItag ;
document.getElementById("endItag").value= endItag ;
alert("sel_start:" + sel_start);
alert("sel_end:" + sel_end);
}
Но эти вычисления начала и конца idex игнорируют "новую строку ('\ r \ n')". Мне нужно иметь индекс с учетом '\ r \ n' ..
Просим вас о помощи, чтобы добиться этого ..