03.06.2010, 15:43
|
Новичок на форуме
|
|
Регистрация: 03.06.2010
Сообщений: 7
|
|
Скрипт: поиск по странице сайта. Не работает...
Попался скрипт поиска по странице сайта. Наверное древний, но в IE8 работает (поиск по слову, части слова, min 2-м буквам), а вот в Opere и Firefox нет. Доработайте, пожалуйста...
<form name="search" onSubmit="return findInPage(this.string.value);">
<font size=3><input name="string" type="text" size=15 onChange="n = 0;"></font>
<input type="submit" value="Поиск">
</form>
<script language="JavaScript">
var NS4 = (document.layers);
var IE4 = (document.all);
var win = window;
var n = 0;
function findInPage(str) {
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
if (n == 0)
alert("Not found.");
}
if (IE4) {
txt = win.document.body.createTextRange();
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
else {
if (n > 0) {
n = 0;
findInPage(str);
}
else
alert("Not found.");
}
}
return false;
}
</script>
|
|
03.06.2010, 15:53
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
даже не знаю с чего начать.
пойду по порядку:
1)
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
2)
Сообщение от ivIvan
|
Наверное древний
|
невероятно.
настолько, что никто в здравом уме его дорабатывать не станет.
проще и правильней с нуля написать
3)
Сообщение от ivIvan
|
Доработайте, пожалуйста...
|
Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".
Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.
|
|
03.06.2010, 16:18
|
Новичок на форуме
|
|
Регистрация: 03.06.2010
Сообщений: 7
|
|
Сообщение от Gvozd
|
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
С этим все нормально...
Дело в том, что скрипт в IE8 работает, а нашел я его в свободном доступе... Просто из других скриптов с такой же функцией (поиск по текущей странице) попадалась одна хрень...
Вопросы "по ходу дела" задавать не могу, т.к. в теме "0".
Спасибо за установление срока "древности"...
|
|
03.06.2010, 16:21
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от ivIvan
|
С этим все нормально...
|
вообще-то нет.
вы все еще не привели свое первое сообщение в читаемый вид.
Сообщение от ivIvan
|
Вопросы "по ходу дела" задавать не могу, т.к. в теме "0".
|
раз вы "0" в теме, и не собираетесь прикладывать усилия, то вам в раздел "Работа"
|
|
03.06.2010, 16:33
|
Новичок на форуме
|
|
Регистрация: 03.06.2010
Сообщений: 7
|
|
Прикладываю усилия:
Сообщение от ivIvan
|
<form name="search" onSubmit="return findInPage(this.string.value);">
<font size=3><input name="string" type="text" size=15 onChange="n = 0;"></font>
<input type="submit" value="Поиск">
</form>
|
Находится в <body>...</body>, позиционирование: левый нижний угол браузера (fixed).
<script language="JavaScript">...</script> в HEAD.
|
|
03.06.2010, 16:46
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от ivIvan
|
Прикладываю усилия:
|
это вы не прикладываете усилия по модификации скрипта.
Это вы его просто используете.
Тут особо негде напрячься
|
|
03.06.2010, 16:52
|
Новичок на форуме
|
|
Регистрация: 03.06.2010
Сообщений: 7
|
|
Сообщение от ivIvan
|
<script language="JavaScript">
var NS4 = (document.layers);
var IE4 = (document.all);
|
Я так понимаю, этот кусок имеет отношение к IE и FF, только указаны старые версии?
|
|
03.06.2010, 17:09
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от ivIvan
|
Я так понимаю, этот кусок имеет отношение к IE и FF, только указаны старые версии?
|
к IE и Netscape Navigator
ныне мертв.
а цифры в именах переменных ничего не означают, в плане проверки
и не в этих строчках основная проблема
|
|
03.06.2010, 17:23
|
Новичок на форуме
|
|
Регистрация: 03.06.2010
Сообщений: 7
|
|
Все, вопросы кончились.
Буду искать другой скрипт для Opera и FF
|
|
03.06.2010, 17:26
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Хм… а никто не знает, с каких версий появилась глобальные функция find в Chrome и Safari?
В Fx она давно. Сейчас подводит только Opera, в 10-й версии все еще нет window.find и уже нет document.selection.createRange().findText…
ivIvan,
поиск текста в браузерах, не поддерживающих TextRange, очень затруднен, приходится работать с текстовыми узлами, а слова могут быть разбиты на несколько узлов, и пробельные символы браузер не все отображает, из-за чего алгоритм становится очень сложным, это не 2 строчки кода подсказать, написание такого скрипта — это уже работа.
-----------
В Safari 3.2 есть функция find, для большинства проектов ниже этой версии нет смысла делать поддержку, на старые версии Chrome в принципе никто и не ориентируется. Значит в аутсайдерах новая Opera…
Последний раз редактировалось Octane, 03.06.2010 в 17:34.
|
|
|
|