Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Скрипт, производящий поиск на странице


Автор: Zaman 9.12.2005, 19:25
как это сделать правильно ?

Автор: Гость_12345 9.12.2005, 19:46
Для IE есть .findText() для объекта TextRange. (Для Range нет)

Автор: Sardar 10.12.2005, 14:23
ИЕ имеет http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/navigateandfind.asp, вещь интересная но не кроссплатформена.

Также были умельцы что innerText/textContent доставали и там искали, но! ИМXО это всё лишнее, ничего лучше чем поиск в FireFox я не видел, браузерный поиск всё равно лучше чем скриптовый.

Автор: Zaman 10.12.2005, 15:58
хорошо что мне тогда использовать для решения поиска не только в IE, но и в FireFox и Opera
какие у них есть для этого ф-ции

Автор: Sardar 10.12.2005, 17:19
Просто написать: жмите ctrl+F для поиска smile
Серьёзно если кто то исщет что то на странице то он либо это делает глазами (человек далёкий от компа), либо автоматом жмёт ctrl+F, твой поиск вряд ли кто заметит.

Автор: Zaman 12.12.2005, 14:45
хочу сделать так как в Google реализовал у себя поиск на странице

Автор: Zaman 12.12.2005, 21:23
решил я эту задачку, топик можно закрыть

Автор: Sardar 13.12.2005, 02:34
А поделиться решением? smile

Автор: Zaman 13.12.2005, 17:44
Под IE везде есть, а вот сделал под FireFox и Opera
версия Лисы - 1.0.7, Opera - 8.5
Использовал Traversal API

Код

var filter=function(n)//пропускает те эл-ты которве не содержат в себе текста
           { 
              if((n.tagName=='IMG')||(n.tagName=='BR')||(n.tagName=='TABLE')||(n.tagName=='TR')||(n.tagName=='TBODY'))
                return NodeFilter.FILTER_SKIP;
              else
                return NodeFilter.FILTER_ACCEPT;     
           }


function findText()
{  
   var str='строке' 
   if (document.createTreeWalker)
   { 
     var TreeWalker=document.createTreeWalker   (document.body,NodeFilter.SHOW_ELEMENT,filter,false);       
     for(var i=TreeWalker.firstChild();i!=null;i=TreeWalker.nextNode())
     {         
          if (i.childNodes.length<=1)
          { 
             var str_Text=i.innerHTML.replace(str,'<font style="background-color: Lime;">'+str+'</font>');
             i.innerHTML=str_Text;
             TreeWalker.nextNode();
          }
     }
   }
}


М
 
Не забывай про теги code

Автор: Sardar 13.12.2005, 18:28
Цитата(Zaman @ 13.12.2005, 16:44)
Использовал Traversal API

Перебор можно и в ручную сделать, ты не обошёл слабое место - поиск по тексту а не по разметке smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)