Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2024, 20:55   #1
gimes
Пользователь
 
Регистрация: 17.01.2022
Сообщений: 63
Вопрос Поиск слова на странице

В браузере нажимаю F12 и ввожу в консоль:
Код:
const wordToFind = "базовые"; // Слово, которое нужно найти
const regex = new RegExp(`(${wordToFind})`, 'gi'); // Регулярное выражение для поиска слова (регистр не важен)

// Получаем весь текст на странице
const bodyHTML = document.body.innerHTML;

// Проверяем, содержится ли слово на странице
if (regex.test(bodyHTML)) {
    console.log(`Слово "${wordToFind}" найдено на странице.`);

    // Заменяем слово на выделенное
    document.body.innerHTML = bodyHTML.replace(regex, '<span style="background-color: yellow;">$1</span>');
} else {
    console.log(`Слово "${wordToFind}" не найдено на странице.`);
}
Но мне надо, чтобы в консоль не выводился HTML страницы.
gimes вне форума Ответить с цитированием
Старый 27.12.2024, 21:10   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,394
По умолчанию

Похоже что выполняемый код всегда должен что-то вернуть. Сделайте так:
Код:
const wordToFind = "базовые"; // Слово, которое нужно найти
const regex = new RegExp(`(${wordToFind})`, 'gi'); // Регулярное выражение для поиска слова (регистр не важен)

// Получаем весь текст на странице
const bodyHTML = document.body.innerHTML;

// Проверяем, содержится ли слово на странице
if (regex.test(bodyHTML)) {
    // Заменяем слово на выделенное
    document.body.innerHTML = bodyHTML.replace(regex, '<span style="background-color: yellow;">$1</span>');

    `Слово "${wordToFind}" найдено на странице.`;
} else {
    `Слово "${wordToFind}" не найдено на странице.`;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.12.2024, 21:43   #3
gimes
Пользователь
 
Регистрация: 17.01.2022
Сообщений: 63
По умолчанию

Благодарю. А как сделать код, который будет работать на страницах Youtube отдельных видео (и в правых превью тоже будет искать)? Сейчас дает ошибку, которую не смог преодолеть:
Код:
VM541:10 This document requires 'TrustedHTML' assignment.
(анонимная) @ VM541:10
VM541:10 Uncaught TypeError: Failed to set the 'innerHTML' property on 'Element': This document requires 'TrustedHTML' assignment.
    at <anonymous>:10:29
(анонимная) @ VM541:10
play.google.com/log?format=json&hasfast=true&authuser=0:1 
        
        
       Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
gimes вне форума Ответить с цитированием
Старый 27.12.2024, 22:35   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,394
По умолчанию

Нашел такое:
Код:
if (window.trustedTypes && window.trustedTypes.createPolicy) {
  window.trustedTypes.createPolicy('default', {
    createHTML: (string, sink) => string
  });
}

const wordToFind = "базовые"; // Слово, которое нужно найти
const regex = new RegExp(`(${wordToFind})`, 'gi'); // Регулярное выражение для поиска слова (регистр не важен)

...
Замена происходит, но странице становится плохо.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.12.2024, 18:18   #5
gimes
Пользователь
 
Регистрация: 17.01.2022
Сообщений: 63
По умолчанию

Вот такой вариант почему - то не работает через Tampermonkey и через Greasemonkey в Firefox тоже.
Код:
// ==UserScript==
// @name     Поиск и выделение слова на YouTube
// @version  1
// @description  Ищет заданное слово и выделяет его на странице YouTube
// @include      https://www.youtube.com/*
// @grant    none
// ==/UserScript==

(function() {
    const wordToFind = "базовые"; // Слово, которое нужно найти
    const regex = new RegExp(`(${wordToFind})`, 'gi'); // Регулярное выражение для поиска слова (регистр не важен)

    // Функция для выделения слова в тексте
    function highlightWord() {
        // Получаем весь текст на странице
        const bodyHTML = document.body.innerHTML;

        // Проверяем, содержится ли слово на странице
        if (regex.test(bodyHTML)) {
            // Заменяем слово на выделенное
            document.body.innerHTML = bodyHTML.replace(regex, '<span style="background-color: yellow;">$1</span>');
            console.log(`Слово "${wordToFind}" найдено на странице.`);
        } else {
            console.log(`Слово "${wordToFind}" не найдено на странице.`);
        }
    }

    // Запускаем функцию при загрузке страницы
    highlightWord();

    // Учитываем динамическое изменение контента, например, при загрузке новых видео
    const observer = new MutationObserver(highlightWord);
    observer.observe(document.body, { childList: true, subtree: true });
})();

Последний раз редактировалось gimes; 28.12.2024 в 18:31.
gimes вне форума Ответить с цитированием
Старый 28.12.2024, 18:57   #6
gimes
Пользователь
 
Регистрация: 17.01.2022
Сообщений: 63
По умолчанию

А вот другой скрипт добавляет вверху экрана надпись на красном фоне. И на основе него делал пример с поском слова. В Greasemonkey в Firefox работает. В Яндекс браузере иногда работает. А в Хроме не работал. В этих двух пробовал через Tampermonkey.
Код:
// ==UserScript==
// @name     Добавить заголовок на YouTube
// @version  1
// @description  Добавляет заголовок на страницу YouTube
// @include      https://www.youtube.com/
// @grant    none
// ==/UserScript==

(function() {
  console.log(document.body.lastChild)
    const h1 = document.createElement('h1');
    h1.style.display = 'block';
    h1.style.position = 'fixed';
    h1.style.zIndex = '9111';
    h1.style.background = 'red';
    h1.style.width = '150px';
    h1.style.height = '150px';
    h1.textContent = 'Получилось';
    document.body.insertAdjacentElement('afterbegin', h1);
})();
gimes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск на странице, выделение найденного слова/слов, или центрирование результата поиска на экране Mr.Ibriev Microsoft Office Word 0 25.04.2020 15:14
Поиск самого часто встречающегося слова на странице k0mп Microsoft Office Word 1 05.12.2018 16:15
Проверка сайтов на наличие слова на странице VitProff Работа с сетью в Delphi 12 11.10.2014 13:02
Поиск слова в строке и редактирование этого слова Wasili4 Microsoft Office Excel 3 22.06.2011 21:06
Разбить текст на слова и произвести поиск каждого слова по текстовому массиву Burning_brook Microsoft Office Excel 2 22.05.2010 01:56