Привет всем!
Кто может помочь с теорией (или примером), а то я что то уже запутался в край.
Итак, есть простой HTML-код:
<html>
<head>
<title>Test Search</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript">
//возвращает список textnode заданого node
function TNList(node,list){
for(var a=0;a<node.childNodes.length;a++){
if(node.childNodes[a].nodeType==3)
list.push(node.childNodes[a]);
else
TNList(node.childNodes[a],list);
}
}
//поиск и выделение объекта (DOM)
function search_and_select(b,str){
var ltn=new Array();
TNList(b,ltn);
for(var a=0;a<ltn.length;a++){
if(ltn[a].nodeValue.indexOf(str)!=-1){
var s=window.getSelection();
var r=document.createRange();
r.setStart(ltn[a],ltn[a].nodeValue.indexOf(str));
r.setEnd(ltn[a],ltn[a].nodeValue.indexOf(str)+str.length);
s.removeAllRanges();
s.addRange(r);
alert('Found!');
}else{
alert('Not Found');
}
}
}
//инициализация
var init=function(){
var str='text into';
search_and_select(document.body,str);
};
</script>
</head>
<body onload="init();">
<div id="child1">Any text into div <span id="child11">and text into span</span> tags</div>
</body>
</html>
По коду понятно, что при загрузке страницы будет произведён поиск фразы 'text into' по всем textnod'ам рекурсивно, находящихся в body. Всё бы хорошо, если поиск будет производиться только внутри textnod'ов. Но что, если, например, понадобится найти фразу 'div and text', у которой начало начинается в одной textnod'е, а окончание в другой? В теории всё понятно
setStart(document.getElementById('child1').firstChild,14);
setEnd(document.getElementById('child11').firstChild,8);
А вот как это практически реализовать что то никак сообразить не могу.
Есть у кого какие мысли по этому поводу?