Поиск по странице с помощью jQuery. Организация поиска по веб-странице на JavaScript (без jQuery) Скрипт поиска по странице html

Поиск по странице с помощью jQuery. Организация поиска по веб-странице на JavaScript (без jQuery) Скрипт поиска по странице html

Подписаться
Вступай в сообщество «de-kaizer.ru»!
ВКонтакте:

Обновленный ответ :

Сначала я не понял, что вы хотите вызвать веб-страницу, которой вы не контролируете, а затем использовать JavaScript в своем браузере для взаимодействия с ней.

Информация в первоначальном ответе ниже по-прежнему актуальна, но возникает вопрос: как заставить код работать в правильном контексте? И ответ: Есть как минимум два способа:

    В любом приличном браузере в наши дни есть встроенные средства отладки. Посмотрите на меню для них, но во многих браузерах они доступны через клавишу F12 или Ctrl + Shift + I. В этих инструментах вы найдете "консоль", где вы можете ввести JavaScript и запустить его в контексте страницы, на которую вы смотрите.

    Это отлично подходит для выполнения действий в интерактивном режиме, но это немного больно повторять его каждый раз. Вы также можете поместить код в локальный файл (например, /home/tjc/foo.js), а затем, когда вы перейдете на страницу, используйте консоль, чтобы добавить этот script на страницу (что приведет к ее выполнению в контексте страница), например:

    Document.documentElement.appendChild(document.createElement("script")).src = "file:///home/tjc/foo.js";

    Как только ваш script сделает то, что вы хотите, вы можете превратить его в bookmarklet . Это закладка браузера с использованием схемы javascript: , а не обычной http: и т.д. Подробнее см. Ссылку. Вам понадобится инструмент, который возьмет ваш код JavaScript и сделает для вас необходимую URL-кодировку, например Bookmarklet Crunchinator или аналогичный.

Оригинальный ответ :

Так что он найдет текст или получит элемент по id/class...

Это три очень разных вопроса:

    Чтобы найти текст на странице, у вас есть несколько вариантов:

    • Если вы хотите только найти текст, но не заботитесь о том, какой элемент содержит его, вы можете просто просмотреть innerHTML on document.body . innerHTML - строка; при доступе к нему браузер создает строку HTML для всех элементов DOM в элементе, на который вы его вызываете (и его потомках). Обратите внимание, что это не исходный контент с сервера; это создается "на лету" при доступе к элементу. Для многих случаев использования получение этой строки, а затем ее просмотр может быть полезным. Обратите внимание, что текст, который вы просматриваете, является разметкой, например, если вы искали слово "таблица", вы можете найти его в предложении ("Мы сели за стол") или в разметке (...).

      Здесь приведен пример подсчета слова I"m на странице с помощью innerHTML: живая копия

      (function() { var pageText = document.body.innerHTML; display("Count of "I\"m" on the page: " + pageText.match(/I"m/g).length); function display(msg) { var p = document.createElement("p"); p.innerHTML = String(msg); document.body.appendChild(p); } })();

      Если вам нужно выяснить, в каком именно элементе он находится, вам нужно будет написать рекурсивную функцию, проходящую через узлы страницы, и для Text , просматривает текст внутри. Вот базовый пример (функция - это функция walk): Живая копия | - см. примечание о примерах в конце.

      (function() { var matches = , index; walk(matches, document.body, ""); function walk(matches, node, path) { var child; switch (node.nodeType) { case 1: // Element for (child = node.firstChild; child; child = child.nextSibling) { walk(matches, child, path + "/" + node.tagName); } break; case 3: // Text if (node.nodeValue.indexOf("I"m") !== -1) { matches.push("Found it at " + path); } break; } } display("Matches found (" + matches.length + "):"); for (index = 0; index < matches.length; ++index) { display(matches); } function display(msg) { var p = document.createElement("p"); p.innerHTML = String(msg); document.body.appendChild(p); } })();

      Чтобы найти элемент на странице id , используйте

    • jQuery
    • Пару дней назад получил тестовое задание от компании на вакансию Front-end dev. Конечно же, задание состояло из нескольких пунктов. Но сейчас речь пойдет только об одном из них - организация поиска по странице. Т.е. банальный поиск по введенному в поле тексту (аналог Ctrl+F в браузере). Особенность задания была в том, что использование каких-либо JS фреймворков или библиотек запрещено. Все писать на родном native JavaScript .

      Поиск готового решения

      Первая мысль: кто-то уже точно такое писал, надо нагуглить и скопипастить. Так я и сделал. За час я нашел два неплохих скрипта, которые по сути работали одинаково, но были написаны по-разному. Выбрал тот, в коде которого лучше разобрался и вставил к себе на старничку.

      Если кому интересно, код брал .

      Скрипт сразу заработал. Я думал, что вопрос решен, но как оказалось, не в обиду автору скрипта, в нем был огромный недостаток. Скрипт вел поиск по всему содержимому тега... и, как вы уже наверное догадались, при поиске любого сочетания символов, которые напоминают тег или его атрибуты, ломалась вся страница HTML.

      Почему скрипт работал некорректно?

      Все просто. Скрипт работает следующим образом. Сперва в переменную записываем все содержимое тега body , затем ищем совпадения с регулярным выражением (задает пользователь при вводе в текстовое поле) и затем заменяем все совпадения на следующий код:

      ...найденное совпадение...
      А затем заменяем текущий тег body на новый полученный. Разметка обновляется, меняются стили и на экране подсвечиваются желтым все найденные результаты.

      Вы уже наверняка поняли, в чем проблема, но я все же объясню подробней. Представьте, что в поле поиска ввели слово «div» . Как вы понимаете, внутри body есть множество других тегов, в том числе и div . И если мы всем к «div» применим стили, указанные выше, то это уже будет не блок, а непонятно что, так как конструкция ломается. В итоге после перезаписи разметки мы получим полностью сломанную веб-страницу. Выглядит это так.

      Как видите, страница полностью ломается. Короче говоря, скрипт оказался нерабочим, и я решил написать свой с нуля, чему и посвящается эта статья.

      Итак пишем скрипт с нуля

      Как все у меня выглядит.

      Сейчас нас интересует форма с поиском. Обвел ее красной линией.

      Давайте немного разберемся. Я это реализовал следующим образом (пока чистый HTML). Форма с тремя тегами.

      Первый - для ввода текста;
      Второй - для для отмены поиска (снять выделение);
      Третий - для поиска (выделить найденные результаты).


      Итак, у нас есть поле для ввода и 2 кнопки. JavaScript буду писать в файле js.js. Предпложим, что его вы уже создали и подключили.

      Первое, что сделаем: пропишем вызовы функции при нажатии на кнопку поиска и кнопку отмены. Выглядеть будет так:


      Давайте немного поясню что тут и зачем нужно.

      Полю с текстом даем id=«text-to-find» (по этому id будем обращатсья к элементу из js ).

      Кнопке отмены даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage("text-to-find",false); return false;»

      - Тип: button
      - При нажатии вызывается функция FindOnPage("text-to-find",false); и передает id поля с текстом, false

      Кнопке поиска даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage("text-to-find",true); return false;»

      - Тип: submit (не кнопка потому, что тут можно юзать Enter после ввода в поле, а так можете и button использовать)
      - При нажатии вызывается функция FindOnPage("text-to-find",true); и передает id поля с текстом, true

      Вы наверняка заметили еще 1 атрибут: true/false . Его будем использовать для определения, на какую именно кнопку нажали (отменить поиск или начать поиск). Если жмем на отмену, то передаем false . Если жмем на поиск, то передаем true .

      Окей, двигаемся дальше. Переходим к JavaScript

      Будем считать, что вы уже создали и подключили js файл к DOM.

      Прежде, чем начнем писать код, давайте отвлечемся и сперва обсудим, как все должно работать. Т.е. по сути пропишем план действий. Итак, нам надо, чтоб при вводе текста в поле шел поиск по странице, но нельзя затрагивать теги и атрибуты. Т.е. только текстовые объекты. Как этого достичь - уверен есть много способов. Но сейчас будем использовать регулярные выражения.

      Итак, следующее регулярное выражение будет искать только текст след. вида: ">… текст...<". Т.е. будет проходить поиск только текстовых объектов, в то время, как теги и атрибуты будут оставаться нетронутыми.

      />(.*?) Так мы будем находить нужные части кода, которые будем парсить и искать совпадения с текстом, который ввел пользователь. Затем будем добавлять стили найденным объектам и после этого заменять html - код на новый.

      Приступим. Сперва переменные, которые нам понадобятся.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; //input - принимаем текст, который ввел пользователь //search - делаем из строки регулярное выражение //pr - сохраняем в нее текущий //result - выборка текста из pr (т.е. отсекаем теги и атрибуты) //result_arr - аналог pr, но со стилями для подсветки //locale_HTML - оригинал который менять не будем, используем для обнуления стилей
      И сразу определим locale_HTML значение независимо от того, ищем мы что-то или нет. Это нужно, чтоб сразу сохранить оригинал страницы и иметь взможность обнулять стили.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный)
      Ок, теперь уже стоит создать функцию, которая вызывается у нас из DOM . Сразу прикинем, что внутри у нас должны быть 2 функции, каждая из которых срабатывает в зависимости от нажатой кнопки. Ведь мы либо проводим поиск, либо обнуляем его. И контроллируется это атрибутом true/false , как вы помните. Так же надо понимать, что при повторном поиске прежние стили должны обнуляться. Таким образом получим следующее:

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { if(status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное if(!status) { FindOnPageBack(); } //Снимаем выделение }
      Ок, часть логики реализована, двигаемся дальше. Необходимо проверять полученное слово на количество символов. Ведь зачем нам искать 1 букву/символ. В общем, я решил эту возможность ограничить 3+ символа.

      Итак, сперва приниамем значение, которое ввел пользователь, и, в зависимости от его длины, выполняем либо основную функцию поиска, либо функцию вывода предупреждения и обнуления. Выглядеть будет так:

      <3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { //выполняем поиск } function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили if(status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное if(!status) { FindOnPageBack(); } //Снимаем выделение }
      Сейчас поясню этот участок кода. Единственное, что могло стать не ясно - вот эта строка:

      function FindOnPageBack() { document.body.innerHTML = locale_HTML; }

      Тут все просто: метод innerHTML возвращает html код объекта. В данном случае мы просто заменяем текущий body на оригинальный, который мы сохранили при загрузке всей страницы.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { input = document.getElementById(name).value; //получаем значение из поля в html if(input.length<3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { function FindOnPageGo() { search = "/"+input+"/g"; //делаем из строки регуярное выражение pr = document.body.innerHTML; // сохраняем в переменную весь body result = pr.match(/>(.*?) Итак, на данном этапе у нас уже есть основные переменные и значения. Теперь надо придать нужным участкам кода стили с выделенным фоном. Т.е. проверка выбранного текста на регулярное выражение (по сути мы выбранный регулярным выражением текст снова парсим регулярным выражением). Для этого надо из введенного текста сделать регулярное выражение (сделали), а затем выполнить метод, переданный в виде такста. Тут нам поможет метод eval() .

      В общем, после того, как мы заменим текст и получим результат со стилями, надо текущий html заменить на полученный. Делаем.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { input = document.getElementById(name).value; //получаем значение из поля в html if(input.length<3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { function FindOnPageGo() { search = "/"+input+"/g"; //делаем из строки регуярное выражение pr = document.body.innerHTML; // сохраняем в переменную весь body result = pr.match(/>(.*?)"+input+""); //находим нужные элементы, задаем стиль и сохраняем в новый массив } for(var i=0; i По сути все готово, и скрипт уже работает. Но добавим еще пару деталей для красоты.

      1) Обрежем пробелы у текста, который вводит пользователь. Вставляем этот код:

      Input = numer.replace(/^\s+/g,""); input = numer.replace(/{1,}/g," ");
      После этой строки:

      Input = document.getElementById(name).value; //получаем значение из поля в html
      2) Сделаем проверку на совпадения (если совпадений не найдено - сообщим об этом). Этот код вставляем внутрь функции function FindOnPageGo() после переменных.

      Var warning = true; for(var i=0;i Посмотреть исходник можно

      Пару дней назад получил тестовое задание от компании на вакансию Front-end dev. Конечно же, задание состояло из нескольких пунктов. Но сейчас речь пойдет только об одном из них - организация поиска по странице. Т.е. банальный поиск по введенному в поле тексту (аналог Ctrl+F в браузере). Особенность задания была в том, что использование каких-либо JS фреймворков или библиотек запрещено. Все писать на родном native JavaScript .

      Поиск готового решения

      Первая мысль: кто-то уже точно такое писал, надо нагуглить и скопипастить. Так я и сделал. За час я нашел два неплохих скрипта, которые по сути работали одинаково, но были написаны по-разному. Выбрал тот, в коде которого лучше разобрался и вставил к себе на старничку.

      Если кому интересно, код брал .

      Скрипт сразу заработал. Я думал, что вопрос решен, но как оказалось, не в обиду автору скрипта, в нем был огромный недостаток. Скрипт вел поиск по всему содержимому тега... и, как вы уже наверное догадались, при поиске любого сочетания символов, которые напоминают тег или его атрибуты, ломалась вся страница HTML.

      Почему скрипт работал некорректно?

      Все просто. Скрипт работает следующим образом. Сперва в переменную записываем все содержимое тега body , затем ищем совпадения с регулярным выражением (задает пользователь при вводе в текстовое поле) и затем заменяем все совпадения на следующий код:

      ...найденное совпадение...
      А затем заменяем текущий тег body на новый полученный. Разметка обновляется, меняются стили и на экране подсвечиваются желтым все найденные результаты.

      Вы уже наверняка поняли, в чем проблема, но я все же объясню подробней. Представьте, что в поле поиска ввели слово «div» . Как вы понимаете, внутри body есть множество других тегов, в том числе и div . И если мы всем к «div» применим стили, указанные выше, то это уже будет не блок, а непонятно что, так как конструкция ломается. В итоге после перезаписи разметки мы получим полностью сломанную веб-страницу. Выглядит это так.

      Как видите, страница полностью ломается. Короче говоря, скрипт оказался нерабочим, и я решил написать свой с нуля, чему и посвящается эта статья.

      Итак пишем скрипт с нуля

      Как все у меня выглядит.

      Сейчас нас интересует форма с поиском. Обвел ее красной линией.

      Давайте немного разберемся. Я это реализовал следующим образом (пока чистый HTML). Форма с тремя тегами.

      Первый - для ввода текста;
      Второй - для для отмены поиска (снять выделение);
      Третий - для поиска (выделить найденные результаты).


      Итак, у нас есть поле для ввода и 2 кнопки. JavaScript буду писать в файле js.js. Предпложим, что его вы уже создали и подключили.

      Первое, что сделаем: пропишем вызовы функции при нажатии на кнопку поиска и кнопку отмены. Выглядеть будет так:


      Давайте немного поясню что тут и зачем нужно.

      Полю с текстом даем id=«text-to-find» (по этому id будем обращатсья к элементу из js ).

      Кнопке отмены даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage("text-to-find",false); return false;»

      - Тип: button
      - При нажатии вызывается функция FindOnPage("text-to-find",false); и передает id поля с текстом, false

      Кнопке поиска даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage("text-to-find",true); return false;»

      - Тип: submit (не кнопка потому, что тут можно юзать Enter после ввода в поле, а так можете и button использовать)
      - При нажатии вызывается функция FindOnPage("text-to-find",true); и передает id поля с текстом, true

      Вы наверняка заметили еще 1 атрибут: true/false . Его будем использовать для определения, на какую именно кнопку нажали (отменить поиск или начать поиск). Если жмем на отмену, то передаем false . Если жмем на поиск, то передаем true .

      Окей, двигаемся дальше. Переходим к JavaScript

      Будем считать, что вы уже создали и подключили js файл к DOM.

      Прежде, чем начнем писать код, давайте отвлечемся и сперва обсудим, как все должно работать. Т.е. по сути пропишем план действий. Итак, нам надо, чтоб при вводе текста в поле шел поиск по странице, но нельзя затрагивать теги и атрибуты. Т.е. только текстовые объекты. Как этого достичь - уверен есть много способов. Но сейчас будем использовать регулярные выражения.

      Итак, следующее регулярное выражение будет искать только текст след. вида: ">… текст...<". Т.е. будет проходить поиск только текстовых объектов, в то время, как теги и атрибуты будут оставаться нетронутыми.

      />(.*?) Так мы будем находить нужные части кода, которые будем парсить и искать совпадения с текстом, который ввел пользователь. Затем будем добавлять стили найденным объектам и после этого заменять html - код на новый.

      Приступим. Сперва переменные, которые нам понадобятся.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; //input - принимаем текст, который ввел пользователь //search - делаем из строки регулярное выражение //pr - сохраняем в нее текущий //result - выборка текста из pr (т.е. отсекаем теги и атрибуты) //result_arr - аналог pr, но со стилями для подсветки //locale_HTML - оригинал который менять не будем, используем для обнуления стилей
      И сразу определим locale_HTML значение независимо от того, ищем мы что-то или нет. Это нужно, чтоб сразу сохранить оригинал страницы и иметь взможность обнулять стили.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный)
      Ок, теперь уже стоит создать функцию, которая вызывается у нас из DOM . Сразу прикинем, что внутри у нас должны быть 2 функции, каждая из которых срабатывает в зависимости от нажатой кнопки. Ведь мы либо проводим поиск, либо обнуляем его. И контроллируется это атрибутом true/false , как вы помните. Так же надо понимать, что при повторном поиске прежние стили должны обнуляться. Таким образом получим следующее:

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { if(status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное if(!status) { FindOnPageBack(); } //Снимаем выделение }
      Ок, часть логики реализована, двигаемся дальше. Необходимо проверять полученное слово на количество символов. Ведь зачем нам искать 1 букву/символ. В общем, я решил эту возможность ограничить 3+ символа.

      Итак, сперва приниамем значение, которое ввел пользователь, и, в зависимости от его длины, выполняем либо основную функцию поиска, либо функцию вывода предупреждения и обнуления. Выглядеть будет так:

      <3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { //выполняем поиск } function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили if(status) { FindOnPageBack(); FindOnPageGo(); } //чистим прошлое и Выделяем найденное if(!status) { FindOnPageBack(); } //Снимаем выделение }
      Сейчас поясню этот участок кода. Единственное, что могло стать не ясно - вот эта строка:

      function FindOnPageBack() { document.body.innerHTML = locale_HTML; }

      Тут все просто: метод innerHTML возвращает html код объекта. В данном случае мы просто заменяем текущий body на оригинальный, который мы сохранили при загрузке всей страницы.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { input = document.getElementById(name).value; //получаем значение из поля в html if(input.length<3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { function FindOnPageGo() { search = "/"+input+"/g"; //делаем из строки регуярное выражение pr = document.body.innerHTML; // сохраняем в переменную весь body result = pr.match(/>(.*?) Итак, на данном этапе у нас уже есть основные переменные и значения. Теперь надо придать нужным участкам кода стили с выделенным фоном. Т.е. проверка выбранного текста на регулярное выражение (по сути мы выбранный регулярным выражением текст снова парсим регулярным выражением). Для этого надо из введенного текста сделать регулярное выражение (сделали), а затем выполнить метод, переданный в виде такста. Тут нам поможет метод eval() .

      В общем, после того, как мы заменим текст и получим результат со стилями, надо текущий html заменить на полученный. Делаем.

      Var input,search,pr,result,result_arr, locale_HTML, result_store; locale_HTML = document.body.innerHTML; // сохраняем в переменную весь body (Исходный) function FindOnPage(name, status) { input = document.getElementById(name).value; //получаем значение из поля в html if(input.length<3&&status==true) { alert("Для поиска вы должны ввести три или более символов"); function FindOnPageBack() { document.body.innerHTML = locale_HTML; } //обнуляем стили } if(input.length>=3) { function FindOnPageGo() { search = "/"+input+"/g"; //делаем из строки регуярное выражение pr = document.body.innerHTML; // сохраняем в переменную весь body result = pr.match(/>(.*?)"+input+""); //находим нужные элементы, задаем стиль и сохраняем в новый массив } for(var i=0; i По сути все готово, и скрипт уже работает. Но добавим еще пару деталей для красоты.

      1) Обрежем пробелы у текста, который вводит пользователь. Вставляем этот код:

      Input = numer.replace(/^\s+/g,""); input = numer.replace(/{1,}/g," ");
      После этой строки:

      Input = document.getElementById(name).value; //получаем значение из поля в html
      2) Сделаем проверку на совпадения (если совпадений не найдено - сообщим об этом). Этот код вставляем внутрь функции function FindOnPageGo() после переменных.

      Var warning = true; for(var i=0;i Посмотреть исходник можно

      Поле поиска для сайта — один из важнейших элементов пользовательского интерфейса на веб-странице. С его помощью пользователь может найти нужный контент на вашем сайте.

      В этом уроке вы узнаете, как создать разметку для поля поиска с помощью HTML5, а также как стилизовать элементы формы, используя возможности CSS3, без использования скриптов.

      1. Разметка HTML

      Элемент
      является контейнером для формы поиска, поле поиска создается при помощи элемента или , а кнопка отправки данных на сервер может создаваться с помощью элемента или * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; } input { width: 100%; height: 42px; padding-left: 10px; border: 2px solid #7BA7AB; border-radius: 5px; outline: none; background: #F9F0DA; color: #9E9C9C; } button { position: absolute; top: 0; right: 0px; width: 42px; height: 42px; border: none; background: #7BA7AB; border-radius: 0 5px 5px 0; cursor: pointer; } button:before { content: "\f002"; font-family: FontAwesome; font-size: 16px; color: #F9F0DA; }

      3. Поле поиска с кнопкой внутри

      * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; } input, button { border: none; outline: none; border-radius: 3px; } input { width: 100%; height: 42px; background: #F9F0DA; padding-left: 15px; } button { height: 26px; width: 26px; position: absolute; top: 8px; right: 8px; background: #F15B42; cursor: pointer; } button:before { content: "\f105"; font-family: FontAwesome; color: #F9F0DA; font-size: 20px; font-weight: bold; }

      4. Поле поиска в стиле «flat»

      * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; background: #A3D0C3; } input, button { border: none; outline: none; background: transparent; } input { width: 100%; height: 42px; padding-left: 15px; } button { height: 42px; width: 42px; position: absolute; top: 0; right: 0; cursor: pointer; } button:before { content: "\f002"; font-family: FontAwesome; font-size: 16px; color: #F9F0DA; }

      5. Поле поиска с толстой нижней границей

      * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; background: #F9F0DA; border-bottom: 4px solid #be290e; } input, button { border: none; outline: none; background: transparent; } input { width: 100%; height: 42px; padding-left: 15px; } button { height: 42px; width: 42px; position: absolute; top: 0; right: 0; cursor: pointer; } button:before { content: "\f178"; font-family: FontAwesome; font-size: 20px; color: #be290e; }

      6. Поле поиска с меняющимся цветом границы

      * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; } input, button { outline: none; background: transparent; } input { width: 100%; height: 42px; padding-left: 15px; border: 3px solid #F9F0DA; } button { border: none; height: 42px; width: 42px; position: absolute; top: 0; right: 0; cursor: pointer; } button:before { content: "\f002"; font-family: FontAwesome; font-size: 16px; color: #F9F0DA; } input:focus { border-color: #311c24; }

      7. Выезжающее поле поиска

      Поле поиска появляется при нажатии на кнопку с иконкой.

      * {box-sizing: border-box;} form { position: relative; width: 300px; margin: 0 auto; height: 42px; } input { height: 42px; width: 0; padding: 0 42px 0 15px; border: none; border-bottom: 2px solid transparent; outline: none; background: transparent; transition: .4s cubic-bezier(0, 0.8, 0, 1); position: absolute; top: 0; right: 0; z-index: 2; } input:focus { width: 300px; z-index: 1; border-bottom: 2px solid #F9F0DA; } button { background: #683B4D; border: none; height: 42px; width: 42px; position: absolute; top: 0; right: 0; cursor: pointer; } button:before { content: "\f002"; font-family: FontAwesome; font-size: 16px; color: #F9F0DA; }

      8. Увеличивающееся в ширину поле поиска

      * {box-sizing: border-box;} form { width: auto; float: right; margin-right: 30px; } input { width: 250px; height: 42px; padding-left: 15px; border-radius: 42px; border: 2px solid #324b4e; background: #F9F0DA; outline: none; position: relative; transition: .3s linear; } input:focus { width: 300px; } button { width: 42px; height: 42px; background: none; border: none; position: absolute; top: -2px; right: 0; } button:before{ content: "\f002"; font-family: FontAwesome; color: #324b4e; } имя ключа параметра. Для поля поиска чаще всего применяется «q» или «text». значение ключа параметра. Чаще всего не задаётся. Пользователь может его изменить на свой текст, если не указаны атрибуты readonly и disabled . заблокировано изменение пользователем заблокированы доступ, изменение пользователем и передача данных текущего параметра поле не может быть пустым шаблон ввода как в регулярных выражениях JS , следование которому необходимо для отправки формы минимальное количество символов, необходимое для отправки формы максимальное количество символов, которое может набрать пользователь длина поля в символах подсказка-заглушка всплывающая подсказка при наведении курсора мышки автозаполнение. Современные браузеры показывают ранее введённые поисковые запросы на текущем домене. Можно его отключить или сделать более конкретизированным. список рекомендованных запросов проверяется орфография и грамматика фокус поля (то есть период между щелчком по элементу и щелчком вне элемента) получен при загрузке документа

      Убрать в поле поиска крестик «Очистить», удаляющий ранее набранный текст

      Как работает форма поиска на сайте

      Самый простой HTML-код

      Если набрать в поле «вопрос» и щелкнуть по кнопке «Найти», то адрес страницы изменится с « http://сайт/2011/06/forma-poiska-po-saitu..html?text=вопрос », как это происходит при нажатии на ссылку . При загрузке страницы, скрипт проверяет наличие заданных параметров в URL и при их обнаружении формирует и отображает результаты поиска по сайту.

      name="text" >

      Но в целях увеличения скорости загрузки документа, скрипт, обрабатывающий запрос, как правило, помещают только на одну страницу сайта, на которую будет сделан переход, если её адрес прописать в атрибуте action: « http://сайт/search/ ?text=вопрос ».

      action="http://сайт/search/" >

      Для работы скрипта могут понадобиться дополнительные параметры, которые указываются в . Это поле не отображается.?searchid=808327 &text=вопрос ».

      Результат работы формы открыть в новой вкладке с помощью атрибута target

      target="_blank" >

      Где взять скрипт поиска по сайту

      Можно воспользоваться

      • предложенным специальными сервисами Яндекса и Google ,
      • встроенным в используемую CMS (при наличии), например, на Blogger на « https://site.ru /search?q=вопрос », где « site.ru » заменить на свой адрес блога,
      • разработанным самостоятельно, например, на PHP.

      Самый простой вариант - перенаправить запрос Google:>

      ← Вернуться

      ×
      Вступай в сообщество «de-kaizer.ru»!
      ВКонтакте:

      Я уже подписан на сообщество «de-kaizer.ru»