Глава 5. АВТОМАТИЗАЦИЯ ВЗАИМОДЕЙСТВИЯ
ПОЛЬЗОВАТЕЛЯ С WEB-СТРАНИЦАМИ
Поиск текстовых фрагментов
на странице
На Web-страницах часто располагают обширные тексты, для пользователя представляет интерес найти некоторые фрагменты текста по заданному поисковому предписанию, для чего Web-страница снабжается поисковой системой. Поэтому, в приведенном примере, рассмотрен принцип организации поиска текстовой информации в интерактивном режиме на странице, загруженной в браузер. На рис. 38 показано приложение с заданным поисковым предписанием «с клав» в текстовом окне, а также показан результат поиска сочетания букв (отмечено - темным цветом).
Рис. 38. Пример формирования поискового предписания для поиска текстового фрагмента на Web-странице в интерактивном режиме
Запуск примера осуществляется при нажатии на гиперссылку: ПРИМЕР18. Программные коды примера представлены в листинге 20.
Листинг 20.
<HTML>
<HEAD>
<TITLE>Поиск в текстовой области</TITLE>
<SCRIPT Language="VBScript">
Dim obj
Sub find2_Onclick()
If W.Value ="" Then
alert "Вы не ввели запрос"
Else
Set obj=window.document.body.createTextRange()
obj.findText(W.Value)
obj.scrollIntoView()
obj.select()
End if
End Sub
Sub find1_Onclick()
If W.Value
="" Then
alert "Вы не ввели запрос"
Else
Set obj=document.all.text.createTextRange()
obj.findText(W.Value)
obj.scrollIntoView()
obj.select()
End if
End Sub
</SCRIPT>
</HEAD>
<BODY BgColor="#FFFACD">
<P Align=Center>
Ведите поисковое предписание запроса<BR>
<INPUT TYPE="TEXT"
Name="W" Value="" Size=43><BR>
<INPUT TYPE="BUTTON"
Name="find1"
Value="ПОИСК В ТЕКСТОВОМ ОКНЕ"><BR>
<INPUT TYPE="BUTTON"
Name="find2" Value="НАЙТИ НА WEB - СТРАНИЦЕ">
<BR>
В текстовую область можно вводить текст,<br>
а затем искать нужные слова или символы<BR>
<Textarea
ID="text" Rows=5 Cols=25
Style="font-size:14pt;
color:Navy; font:bold;
BackGround:#EEE8AA">
</Textarea><BR>
</P>
<P
Align=Center>
<DIV
ID="t1" Align=Center
Style="font-size:12pt; color:Navy; font:bold; BackGround:#ADFF2F">
В этом выделенном фрагменте на экране<br>
можно осуществить поиск необходимого<br>
слова или сочетания символов, которые<br>
расположены в непосредственной близости
</DIV>
</P>
<A
TARGET="Location" HREF="Dop_files/Code4.txt"
Title="Будет открыто окно с программой данного приложения">
Посмотреть программные коды
</A>
</BODY>
</HTML>
Для решения задачи поиска в тексте используется объект TextRfnge (Текстовая область). Этот объект обеспечивает доступ к текстовой информации, находящейся в объектах, которые соответствуют тегам <BODY>, <TEXTAREA> и <INPUT TYPE=text>. В примере (рис. 38) созданы две процедуры под именами find1 и find2, чтобы показать, как можно разделить поиск только в текстовом окне от поиска символов на всем экране браузера. После того, как пользователь введет поисковое предписание в верхнее текстовое окно, и нажмет на кнопку с наименованием «ПОИСК В ТЕКСТОВОМ ОКНЕ» в процедуре find2() будут задействованы три метода, относящиеся к объекту текстовая область (имя этого объекта – obj).
Метод findText(W.Value) позволяет осуществить поиск в текстовой области (all.text – для объекта на странице тега <TEXTAREA>) по введенным символам в объект с именем W. С помощью метода scrollIntoView() содержимое окна прокручивается так, чтобы найденные символы были видны на экране, и, наконец, метод select() позволяет найденное сочетание символов выделить другим цветом (подцветка). Если посмотреть внимательно на содержимое процедуры обработки события щелчка левой клавишей мыши по кнопке с наименованием «НАЙТИ НА WEB-СТРАНИЦЕ», то различие будет только в описании метода createTextRange() – создать текстовую область для объекта, который принадлежит всему документу. Т.е. вместо all.text, стоит запись – body, обозначающая тело всей Web-страницы. Чтобы убедиться в том, что действительно поиск будет проведен по всем объектам, которые принадлежат документу, загруженному в браузер, введен еще один выделенный объект. Этот объект - t1, заключен в теге-контейнере <DIV>. Если ввести в качестве поискового предписания, например, слово «близости», то после нажатия на вторую кнопку, это слово будет найдено.