Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

JS-поиск по содержимому страницы.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> JS-поиск по содержимому страницы.
Имя
Сообщение << Старые топики   Новые топики >>
JS-поиск по содержимому страницы. - 2010-01-21 10:33:44.770000   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
Хотелось бы попросить код для мгновенного поиска по документу HTML без перезагрузки страницы. Как это выглядит: пользователь в текстовое поле вводит слово или часть, а это слово, если оно есть на странице, выделяется каким-то, к примеру, желтым бэкграундом. Вот так, как в ИЕ:

Post #: 1
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 11:07:29.613333   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
Ну тут и ajax не нужон. Просто javascript-oм ищешь нужные слова, просматривая dom. Хотя это геморно и при большой странице будет жесть…. А чтоб подсвечивалось - втавляешь найденное слово в span с желтым цветом. Но лучше, конечно, делать это на сервере (быстрее будет)
Post #: 2
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 11:09:48.610000   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
Я прекрасно понимаю принцип реализации этого. Я же в самом начале написал, что мне код нужен, а не теоретическое пошаговое описание работы скрипта.
Post #: 3
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 11:49:59.990000   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
на jquery примерно так будет
var word = "слово"; $('*').each(function() { var text = $(this).text(); var index = text.indexOf(word); if (index) { //вставляешь элемент в позицию для выделения } });
Примерно так, не проверял рботу
Post #: 4
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 12:17:00.940000   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
Короче, нашел я похожий скрипт, но он не так совершенен, как мне бы хотелось.
Можно проверить работу на сайте: http://strategia.net.ua/
Бесит 3 момента поиска:
1. основних type=text {95919BE0-C436-4eab-8083-096E94826667}="основних"> - строка появляется после того, как нажимаю "Поиск".
2. Чувствительность к регистру искомого текста.
3. При попытке поиска другого текста старый текст по-прежнему остается выделеным.

Вот сам код:
&lt;sсriрt type="text/javasсriрt"&gt; function searchTextOnPage(inputId) { var obj = window.document.getElementById(inputId); var textToFind; if (obj) { textToFind = obj.value; } else { alert("Не могу найти текст = " + inputId); return; } if (textToFind == "") { alert("Вы ничего не ввели"); return; } document.bоdу.innerHTML = document.bоdу.innerHTML.replace(eval("/"+textToFind+"/g"),"&lt;b style='color:red; text-transform:uppercase;'&gt;"+textToFind+"&lt;/b&gt;"); var obj = window.document.getElementById(inputId); obj.value = textToFind; } &lt;/sсriрt&gt; &lt;input type="text" id="text-to-find"&gt;&nbsp;&lt;input type="button" value="Поиск" оnclick="javasсriрt: searchTextOnPage('text-to-find'); return false;"/&gt; Подскажите, пожалуйста, как убрать то, что я описал выше.
Post #: 5
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 13:06:42.310000   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
1 - не понял что-то…
2 - добавь флаг /i при replace после /g
3 - заменяй не на <b style='color:red; text-transform:uppercase;'> , а, например <b class='qqqq'> Потом перед поиском удаляй их, а вставляй содержимое
Post #: 6
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 13:09:19.836666   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
quote:

ORIGINAL: Papa James

1 - не понял что-то…
2 - добавь флаг /i при replace после /g
3 - заменяй не на &lt;b style='color:red; text-transform:uppercase;'&gt; , а, например &lt;b class='qqqq'&gt; Потом перед поиском удаляй их, а вставляй содержимое


Ты у меня на сайте посмотрел как работает этот чертов поиск? Через ИЕ обязательно глянь.

UPD: добавления флага не помогло.

Вот что я имел ввиду по первому пункту:


UPD: еще вижу, что неверный синтаксис eval(), поэтому и абра-кадабра появляется, как на картинке. Как убрать?
Post #: 7
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 14:05:40.136666   
Papa James

Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
Щас вообще не работает нигде. ))
1 пункт - зачем ты в скрипте в последней строчке значение в инпут пихаешь?
По 3 пункту - лучше храни в глобальной переменной, последнее значение поиска и заменяй <b style='color:red; text-transform:uppercase;'>text</b> на text - проще, но не особо верно. И нафиг eval делать вообще?
Post #: 8
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 14:09:32.333333   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
Я сделаю так, как мне посоветут, лишь бы работало все. Сейчас хоть решил проблему с чувствительностью к регистру.
Post #: 9
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 14:36:26.473333   
codeismy.name

Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
уже давно по этой теме писал статью
http://codeismy.name/stati/javascript/javascript-poisk-po-stranice/
вот можеш почитать может поможет :)
Post #: 10
RE: AJAX-поиск по содержимому страницы. - 2010-01-21 15:09:50.953333   
Слесарь_теоретик

Сообщений: 277
Оценки: 0
Присоединился: 2009-12-02 17:27:29.996666
quote:

ORIGINAL: codeismy.name

уже давно по этой теме писал статью
http://codeismy.name/stati/javascript/javascript-poisk-po-stranice/
вот можеш почитать может поможет :)

 
Гениально. Вот только скрипт я и брал с твоего сайта.
Post #: 11
Страниц:  [1]
Все форумы >> [Веб-программинг] >> JS-поиск по содержимому страницы.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.