Как найти в коде сайта слово

Новичку очень трудно найти нужный символ или слово в массе кода, однако это делается очень быстро и просто. Если не знаете как, то читайте дальше.

В следующей статье, мы приступим к редактированию шаблона, и нам придётся находить нужные элементы в коде темы.

Если кто-то ещё не видел, что из себя представляет код шаблона, то зайдите в Консоль — Внешний вид — Редактор.

Перед Вами откроется код файла style.css. Покрутите его вниз, и первое, что придёт Вам в голову будет: ё-моё, как же в этой массе английских слов, цифр и символов, найти то, что нам будет нужно.

Для полноты ощущения, можно открыть один из php файлов, которые расположены в колонке справа от поля редактора.

Только сразу отгоните мысль типа: «Я в этом до самой смерти не разберусь». Разберётесь, и я Вам в этом помогу.

Рассмотрим два варианта, в зависимости от начальных условий, нахождения нужного элемента в коде.

Вариант 1.

Условие: мы точно знаем то, что нам нужно найти.

Для примера возьмём код страницы.

Комбинация клавиш Contrl-F откроет окно поиска в правом верхнем углу, в которое можно ввести искомый элемент кода. Элемент и все его повторения подсветятся.

Поиск в коде

Этот поиск работает абсолютно для любого кода, открытого в браузере, то есть на странице.

Вариант 2.

Условие: мы видим элемент на странице, но не знаем ни его html, ни css.

В этом случае потребуется web-инспектор, или по другому Инструмент разработчика.

Инструмент разработчика есть во всех браузерах и открыть его можно или клавишей F12, или правой клавишей мыши, выбрав “Просмотреть код” или “Исследовать элемент”. В разных браузерах по разному.

Главное не выбирайте “Просмотреть код страницы”. Похоже, но не то.

После этого появится web-инспектор. Его интерфейс в разных браузерах немного отличается, но принцип действия везде одинаковый.

Я покажу на примере web-инспектора Chrome.

Заходим на страницу и открываем web-инспектор. По умолчанию он откроется в двух колонках, в левой будет html код всех элементов, находящихся на странице, а в правой — css оформление.

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

И вот так, открывая вложение за вложением, можно добраться практически до любого элемента, находящегося на странице.

Определить, какой код, какому элементу соответствует, очень просто.

Надо просто вести по строкам курсором, и как только курсор оказывается на строке с кодом, так тут-же элемент, которому соответствует этот код, подсвечивается.

Теперь найдём css этого элемента. Для этого надо один раз щёлкнуть левой клавишей по строке с html, и в правой колонке отобразятся все стили, которые ему заданы, а так-же стили, влияющие на элемент, от родительских элементов.

Теперь, зная class или id элемента, можно спокойно идти в файл style.css, найти в нём нужный селектор, с помощью Поиска (Ctrl+F), и править внешний вид элемента.

Желаю творческих успехов.

Неужели не осталось вопросов? Спросить


Перемена

— Мам, ну почему ты думаешь, что если я была на дне рождения, то сразу пила?!
— Дочь а нечего что я папа?

Объявление в метро: «при обнаружении подозрительных предметов сделайте подозрительное лицо.

В раздел > > > Исправляем шаблон WordPress. Веб-инспектор

how can i search an html page for a word fast?
and how can i get the html tag that the word is in? (so i can work with the entire tag)

asked Apr 14, 2009 at 16:08

Chen Kinnrot's user avatar

Chen KinnrotChen Kinnrot

20.5k17 gold badges79 silver badges139 bronze badges

To find the element that word exists in, you’d have to traverse the entire tree looking in just the text nodes, applying the same test as above. Once you find the word in a text node, return the parent of that node.

var word = "foo",
    queue = [document.body],
    curr
;
while (curr = queue.pop()) {
    if (!curr.textContent.match(word)) continue;
    for (var i = 0; i < curr.childNodes.length; ++i) {
        switch (curr.childNodes[i].nodeType) {
            case Node.TEXT_NODE : // 3
                if (curr.childNodes[i].textContent.match(word)) {
                    console.log("Found!");
                    console.log(curr);
                    // you might want to end your search here.
                }
                break;
            case Node.ELEMENT_NODE : // 1
                queue.push(curr.childNodes[i]);
                break;
        }
    }
}

this works in Firefox, no promises for IE.

What it does is start with the body element and check to see if the word exists inside that element. If it doesn’t, then that’s it, and the search stops there. If it is in the body element, then it loops through all the immediate children of the body. If it finds a text node, then see if the word is in that text node. If it finds an element, then push that into the queue. Keep on going until you’ve either found the word or there’s no more elements to search.

answered Apr 14, 2009 at 16:15

nickf's user avatar

3

You can iterate through DOM elements, looking for a substring within them. Neither fast nor elegant, but for small HTML might work well enough.

I’d try something recursive, like: (code not tested)

findText(node, text) {
  if(node.childNodes.length==0) {//leaf node
   if(node.textContent.indexOf(text)== -1) return [];
   return [node];
  }
  var matchingNodes = new Array();
  for(child in node.childNodes) {
    matchingNodes.concat(findText(child, text));
  }
  return matchingNodes;
}

answered Apr 14, 2009 at 16:14

vartec's user avatar

vartecvartec

130k36 gold badges217 silver badges244 bronze badges

0

You can try using XPath, it’s fast and accurate

http://www.w3schools.com/Xpath/xpath_examples.asp

Also if XPath is a bit more complicated, then you can try any javascript library like jQuery that hides the boilerplate code and makes it easier to express about what you want found.

Also, as from IE8 and the next Firefox 3.5 , there is also Selectors API implemented. All you need to do is use CSS to express what to search for.

answered Apr 14, 2009 at 16:16

Azder's user avatar

AzderAzder

4,6787 gold badges37 silver badges57 bronze badges

2

You can probably read the body of the document tree and perform simple string tests on it fast enough without having to go far beyond that – it depends a bit on the HTML you are working with, though – how much control do you have over the pages? If you are working within a site you control, you can probably focus your search on the parts of the page likely to be different page from page, if you are working with other people’s pages you’ve got a tougher job on your hands simply because you don’t necessarily know what content you need to test against.

Again, if you are going to search the same page multiple times and your data set is large it may be worth creating some kind of index in memory, whereas if you are only going to search for a few words or use smaller documents its probably not worth the time and complexity to build that.

Probably the best thing to do is to get some sample documents that you feel will be representative and just do a whole lot of prototyping based around the approaches people have offered here.

answered Apr 14, 2009 at 16:19

glenatron's user avatar

glenatronglenatron

10.9k13 gold badges63 silver badges109 bronze badges

form.addEventListener("submit", (e) => {
e.preventDefault();
var keyword = document.getElementById("search_input");
let words = keyword.value;
var word = words,
    queue = [document.body],
    curr;
while (curr = queue.pop()) {
    if (!curr.textContent.toUpperCase().match(word.toUpperCase())) continue;
    for (var i = 0; i < curr.childNodes.length; ++i) {
        switch (curr.childNodes[i].nodeType) {
            case Node.TEXT_NODE: // 3
                if (curr.childNodes[i].textContent.toUpperCase().match(word.toUpperCase())) {
                    console.log("Found!");
                    console.log(curr);
                    curr.scrollIntoView();
                }
                break;
            case Node.ELEMENT_NODE: // 1
                queue.push(curr.childNodes[i]);
                break;
        }
    }
}

});

answered Dec 18, 2020 at 17:39

Mohammed Adil's user avatar

При вводе строки по CTRL+F в коде надо помнить, что внутри строчки не должно быть никаких тегов, например изменения шрифта или стиля, иначе строчка может и не найтись в поиске по тексту HTML кода.

Например текст на странице такой:

2х2=4

Это же самое в HTML коде выглядит так:

2х2=<strong>4</stron­g>

Поиск ничего не даст

Такое бывает в тех случаях когда внутри строки используются теги; в этом случае надо найти и скопировать строчку на экране, затем преобразовать в HTML (фрагмент кода для преобразования приведен в ответе на вопрос Какие есть толковые способы перевести doc в html?) и только потом, зная как закодирована строчка, можно искать этот код в коде HTML.

В этой статье мы разберём как сделать на JavaScript поиск на странице или если точнее по списку, будет крайне полезная и интересная статья.

Также рекомендую прочитать «Прогноз погоды на JavaScript», тоже крайне интересная и полезная статья.

Как создать поиск на JavaScript:

Для начала, перед созданием нам нужно сделать не большой HTML блок со списком, это делается всё очень просто, вот:

<input type=“text” id=“inputSearch” placeholder=“Search..” title=“Type in a category”>

<ul id=“list”>

    <li><a href=“#”>HTML</a></li>

    <li><a href=“#”>CSS</a></li>

    <li><a href=“#”>JavaScript</a></li>

    <li><a href=“#”>PHP</a></li>

    <li><a href=“#”>Python</a></li>

    <li><a href=“#”>jQuery</a></li>

    <li><a href=“#”>SQL</a></li>

    <li><a href=“#”>Bootstrap</a></li>

    <li><a href=“#”>Node.js</a></li>

</ul>

Здесь всё просто, мы просто создали не большой список, в котором храним ссылке, но это для примера.

Теперь перейдём самому главному, это самому поиску, для этого нам понадобится создать одну функцию, которая как раз и будет выполнять поиск, вот она:

function search() {

    let input = document.getElementById(“inputSearch”);

    let filter = input.value.toUpperCase();

    let ul = document.getElementById(“list”);

    let li = ul.getElementsByTagName(“li”);

    // Перебирайте все элементы списка и скрывайте те, которые не соответствуют поисковому запросу

    for (let i = 0; i < li.length; i++) {

        let a = li[i].getElementsByTagName(“a”)[0];

        if (a.innerHTML.toUpperCase().indexOf(filter) > 1) {

            li[i].style.display = “”;

        } else {

            li[i].style.display = “none”;

        }

    }

}

В начале функции мы объявляем различного рода переменные, сначала берём наш input, потом создаём новую переменную присваиваем ей значение поля, но предварительно всю строку переводим в большой регистр, это нам пригодиться для сравнения.

Последнее берём ul и остальные элементы списка, который есть внутри него, проходимся по ним циклом, берём элемент a и сравниваем его, с переменной filter предварительно переводя высший регистр, всё это нужно, чтобы строки правильно сравнились, а при сравнение строк также учитывается и их регистр.

Если мы находим совпадение в строке ссылки, то тогда выставляем настройки display, пустую строку, иначе none, таким образом и работает поиск на JS.

Последние что нам осталось, это отследить, это событие нажатия клавиш, для этого вписываем такой код:

document.addEventListener(‘keyup’, search);

Таким образом мы будим следить на нажатие клавиш, и если в поле что-то изменилось, то применять это.

Вот что получилось:

Как можете заметить всё работает.

Вывод:

В этой статье вы прочитали, как сделать на JavaScript поиск на странице или по списку, и в целом тут не чего сложного нет, надо просто создать одну функцию.

Кусок кода был взят с сайта по этой ссылке.

Подписываетесь на соц-сети:

Оценка:

Загрузка…

Также рекомендую:

Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

JavaScript поиск по странице

Здравствуйте уважаемые читатели блога LifeExample, все мы пользуемся электронным поиском по странице в наших веб браузерах при помощи горячих клавиш CTRL+F либо F3. И кажется уже от таких привилегий нам никуда не деться, так как самостоятельно читать все содержимое страницы, зачастую бывает некогда. Беда в том, что далеко не все начинающие пользователи знают о таких скрытых возможностях любого браузера, но им можно помочь, прикрутив самодельный JavaScript поиск по странице, в тех проектах, где без него совсем никак.

Поиск по странице, может понадобиться для страниц предоставляющих большой объем данных, включая таблицы и списки. Замечу, что такая потребность возникает в том случае, когда контент страницы является статичным, и не генерируется из базы данных.

Искать на странице нужную информацию будет удобнее, если для этого реализовать соответствующий интерфейс:

Форма ввода поиска по странице

В поле нужно ввести слово для поиска и нажать кнопку «Искать», тут все интуитивно понятно. Давайте перейдем к реализации самого механизма поиска по странице и посмотрим, какие могут быть нюансы при его реализации.

Как искать слово на странице?

  1. Нужно проверить корректность ввода данных, в нашем случае мы только обрежем пробельные символы по бокам фразы для поиска, а также просто проверим на саму форму на наличие в ней поискового запроса.
  2. Так как данные статичны, и хранятся только в DOM’e страницы, то поиск по ней будет производиться именно по содержимому DOM (Document Object Model).
  3. Важным является, показать пользователю все результаты, которые нашел наш JavaScript поиск. Т.е. подсветить фон под найденными частями содержимого страницы.
  4. Так как этот мини модуль поиска по странице имеет смысл подключать только к большим страницам, которые имеют прокрутку, то при наличии найденной фразы, где-то вне зоны видимости неплохо будет прокрутить scroll до найденного элемента.
  5. Повторное использование поиска, также является важным моментом в работе данного скрипта. Т.к. подсветка найденных частей является результатом изменения содержимого DOM объекта, то каждый последующий цикл поиска должен затирать результаты предыдущего и возвращать содержимое страницы к исходному виду, для дальнейших изменений новой итерации.

Ну, так вкратце вроде бы и все. Несмотря на объемность выделенных пунктов, реализация их не занимает много времени и места в коде, вот готовый скрипт для механизма JavaScript поиска по странице :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

<script type=“text/javascript”>
var lastResFind=””; // последний удачный результат
var copy_page=””; // копия страницы в ихсодном виде
function TrimStr(s) {
     s = s.replace( /^s+/g, ”);
  return s.replace( /s+$/g, ”);
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
  var obj = window.document.getElementById(inputId);
  var textToFind;

 
  if (obj) {
    textToFind = TrimStr(obj.value);//обрезаем пробелы
  } else {
    alert(“Введенная фраза не найдена”);
    return;
  }
  if (textToFind == “”) {
    alert(“Вы ничего не ввели”);
    return;
  }

 
  if(document.body.innerHTML.indexOf(textToFind)==”-1″)
  alert(“Ничего не найдено, проверьте правильность ввода!”);

 
  if(copy_page.length>0)
        document.body.innerHTML=copy_page;
  else copy_page=document.body.innerHTML;

 
  document.body.innerHTML = document.body.innerHTML.replace(eval(“/name=”+lastResFind+”/gi”),” “);//стираем предыдущие якори для скрола
  document.body.innerHTML = document.body.innerHTML.replace(eval(“/”+textToFind+”/gi”),”<a name=“+textToFind+” style=‘background:red’>“+textToFind+”</a>“); //Заменяем найденный текст ссылками с якорем;
  lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
  window.location = ‘#’+textToFind;//перемещаем скрол к последнему найденному совпадению
 }
</script>
<body>
<h2>JavaScript поиск по странице</h2>
<input type=“text” id=“text-to-find” value=“”>
<input type=“button” onclick=“javascript: FindOnPage(‘text-to-find’); return false;” value=“Искать”/>
<br/><i>Введите слово или фразу для поиска.</i>
<hr/>

<table border=‘2’ cellpadding=’20’>
 <tr><th>Товар</th><th>Вес</th><th>Стоимость</th></tr>
 <tr><td>Монитор 19 дюймов</td><td>1 кг</td><td>1900 руб.</td></tr>
 <tr><td>монитор 18 дюймов</td><td>2 кг</td><td>1800 руб.</td></tr>
 <tr><td>Монитор 20 дюймов</td><td>2 кг</td><td>1900 руб.</td></tr>
</table>
</body>

Попробуйте, протестировать поисковыми запросами «19», «2 кг» и другими. Также советую проверить авто скролинг, для этого добавляйте текст до тех пор пока справа не появится полоса прокрутки.

Вот так выглядит пример использования скрипта:

Пример JavaScript поиска по странице

Что касается комментариев по коду, наверное, они тут излишни, так как присутствуют внутри скрипта. Единственное, с чем могут возникнуть трудности у новичков, это понимание смысла регулярных выражений при обрезании пробелов. Всем кому понадобится помощь, советую почитать соответствующую статью о регулярных выражениях.

Реализованный в данной статье, с помощью языка JavaScript , поиск по странице валиден во всех браузерах, включая Internet Explorer.

Читайте также похожие статьи:

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Яндекс.Метрика

Добавить комментарий