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


Автор: Uragan 10.5.2007, 05:52
Здравствуйте!
Меня попросили сделать поиск на html странице я нашел какой-то скрипт который ищет информацию,
в принципе он подходит.
Код

<html>
<head>

 <Style>
   A:Link{ Color: #000000; Text-decoration: underline}
   A:Visited{ Color: #000000; Text-decoration: underline}
   A:Hover{ Color: #000000; Text-decoration: none}
 td, body {font-family: verdana, arial, helvetica; font-size:11px;}  
 </Style>

<!-- HEAD START HERE -->

<!-- HEAD END HERE -->

</head>
<body bgcolor="#EDEDED" text="#000000" link="#000000" topmargin="0" leftmargin="0">
<center>

<!-- BODY START HERE -->

<p>
<a href="javascript:FD983r={x:function(){var r,i,s=document.selection.createRange().text;if(!s)s=prompt('Найти:','');if(s){r=document.body.createTextRange();for(i=0;r.findText(s);i++){r.execCommand('BackColor','','lightyellow');r.collapse(false)};alert('Найдено: '+i+' слово(а)')}}};FD983r.x()">Найти на этой странице</a></p>

<!-- BODY END HERE -->

</body>
</html>



Но на странице у меня два фрейма. Мне нужно, чтобы надпись найти была в левом фрейме а вот искал он информацию не на той странице на которой кнопка поиска а на другой (например: forsearch.html) и выводил ее в правом фрейме.

Этот скрипт я нашел такой какой он есть, а сам в Java совсем не разбираюсь.
Заранее благодарен.

Автор: 12345c 10.5.2007, 13:46
Не смущает то, что не будет работать в Firefox?

Автор: Uragan 11.5.2007, 01:00
да эт не важно!

Автор: 12345c 11.5.2007, 11:30
Тогда (кстати, кто скажет, как сделать подобное на FF?)

пишете скрипт в фрейме, где стоит форма (или ссылка, как здесь) поиска, и везде, где идёт обращение к объектам текущего окна, пишете в начале top.frames['имя_фрейма']

Код

<a href=# onclick=ff();return!1>Найти на этой странице</a>

<script>
ff=function()
var r,i,s=top.frames['имя_фрейма'].document.selection.createRange().text;
if(!s)s=prompt('Найти:','');
if(s){
  r=top.frames['имя_фрейма'].document.body.createTextRange();
  for(i=0;r.findText(s);i++){
    r.execCommand('BackColor','','lightyellow');r.collapse(false)};
alert('Найдено: '+i+' слово(а)')}}};
</script>
Имя фрейма написано в теге <frame name=... >. Или iframe.

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