Ищем так: page.php?search=слово
Весь текст по которому нужно осуществлять поиск, заключить в контейнер с параметром id='page'
Таким образом поиск осуществляется только по нужным частям документа, тоесть меню, реклама и прочее в поиск входить не будут.
Существующий недочёт -
использовать теги внутри этого контейнера будет сложновато, так как при поиске слова loop (пример), такая страница может дать сбой:
Максимальный <b class='loop'>размер</b> файла (в байтах):<span class='loop'>307200</span>
<embed src='' loop=True>
Разрешенные к загрузке расширения: zip,rar,gz,7z,bz2,tar,txt,jpeg,jpg,png,gif
</div>
Буду рад, кто поможет доработать.
Автор я =)
----- Truly yours, Sasha.
UserID
Отправлено: 12 Апреля, 2007 - 13:54:35
Магистр JavaScript
Покинул форум
Сообщений всего: 151
Дата рег-ции: Авг. 2006
Помог: 0 раз(а)
valenok Как всегда рулит.
Ты это, на будущее, объясняй какой сбой может дать такой поиск. Ну коль ты ео не привёл, тогда я расскажу вкратце, какой первый баг может быть.
З.Ы. Сразу скажу, скрипт не проверял, смотрел только на глаз.
Значит так, при поиске слова loop в заданном контейнере мы можем получить примерно следующее:
Вот. Что не есть хорошо, даже я бы сказал совсем плохо.
Возможное решение.... хм.
Я не силён в регулярах, но я бы сделал так. Все тэги (в миру node-ы) заменил через регулярное выражение, на какое-нибудь уникальное сочетание, типа {HU}, а затем уже реализовывал поиск. После поиска, делаем обратное преобразование {HU}, предварительно где-то храня массив заменённых нодов.
Валенок, с меня пиво, если сделаешь ))
ЗЫ. Кстати, баг на самом деле жуткий частично дефейснул эту страницу. Вроде как исправил.
-SCHATTEN-
Отправлено: 12 Апреля, 2007 - 13:58:07
Пользователь
Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006 Откуда: Оттуда !
Помог: 0 раз(а)
А пиво ты ему по почте отправишь ?
UserID
Отправлено: 12 Апреля, 2007 - 14:04:10
Магистр JavaScript
Покинул форум
Сообщений всего: 151
Дата рег-ции: Авг. 2006
Помог: 0 раз(а)
-SCHATTEN-
Знаешь, я просто не люблю исправлять или дополнять чьи-то ошибки, или какие-то непонятные места. Я лучше 10 раз перепишу заново, но это будет своё, где я знаю каждую переменную и функцию практически "в лицо" Поэтому будем ждать от Валенка результаты. Честно говоря самому интересно, потому что сам этим сейчас занимаюсь.
valenok
Отправлено: 12 Апреля, 2007 - 15:40:20
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
функция translate() декодировала только UTF-8 и работала только с кодированием русского текста в опере. Теперь поддержка и ФФ.
Много словный поиск. Слова разделять пробелом.
Теперь не придётся опасаться что искомые слова в тегах будут заменены. Отнюдь нет.
Недочёты:
Если в тексте имеется кусочек вида =abcd , при поиске abcd - строка обнаружена не будет.
Методы борьбы:
- Ставить пробел после символа равно (=)
- Не ставить пробел после символа равно (=) в тегах. \n\n(Добавление)
Ставить пробел после символа равно (=) "= abcd"
----- Truly yours, Sasha.
UserID
Отправлено: 12 Апреля, 2007 - 15:45:50
Магистр JavaScript
Покинул форум
Сообщений всего: 151
Дата рег-ции: Авг. 2006
Помог: 0 раз(а)
Неплохо было бы добавить заодно и скрол до места выделения. Может быть ситуация, когда контейнер имеет довольно внушительную высоту, либо если высота фиксированная, тогда внушетельную полосу прокрутки. Добавь чтоб ещё и скролило автоматом, будет вообще золото. И кстати, договоаривались все ещё комментарии писать, не все же так круто знаю жабаскрипт, как ты
valenok
Отправлено: 12 Апреля, 2007 - 15:48:11
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Дело в том что заметить выделение даже при экстра быстрой прокрутке труда составить не должно, а совпадений может быть несколько.
Потому на мой взгляд он не нужен, хотя труда добавление такой возможности не составит.\n\n(Добавление)
Два слова:
в тексте не должно быть последовательности символов =0-0
в тексте после знака равно желательно ставить пробел
в тегах не ставить пробел после знака равно у атрибутов.
Удачи.
----- Truly yours, Sasha.
Jakeryf
Отправлено: 12 Апреля, 2007 - 16:59:58
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2007 Откуда: System Virta
var textNodeStart = document.createTextNode(textNodes[i].nodeValue.substr(0, textNodes[i].nodeValue.toLowerCase().indexOf(text.toLowerCase())));
var textNodeEnd = document.createTextNode(textNodes[i].nodeValue.substr(textNodes[i].nodeValue.toLowerCase().indexOf(text.toLowerCase())+ text.length));
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.