Задать вопрос
@Quqas

Как упростить и ускорить js на смену текста?

имеем такой скрипт для tampermonkey в chrome
который уже с Вашей помощью неоднократно был улучшен

скрипт
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        *://*/*

// @grant        none
// ==/UserScript==

window.addEventListener('load',setTimeout (function() {
    'use strict';
    // create a TreeWalker of all text nodes
var allTextNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT),


// задаём переменные
    text014 = /слова\s+слова/g,
    text015 = /слова\s+слова\s+слова/g,
    .............
	// реально уже 350 переменных
	............................
    text149 = /слова\s+слова/g,

    replaceValue = "слова",
    ClearText = "";

// iterate through all text nodes
while (allTextNodes.nextNode()) {
   
   replaceNodeText(allTextNodes.currentNode, text015, ClearText);
   replaceNodeText(allTextNodes.currentNode, text016, replaceValue);
   
   // приходится теже самые 350 строк добавлять чтоб сменилось
   
   replaceNodeText(allTextNodes.currentNode, text147, ClearText);
   replaceNodeText(allTextNodes.currentNode, text148, replaceValue);
  
}
    function replaceNodeText(node, search, replaceText)
    {
	node.nodeValue = node.nodeValue.replace(search, replaceText);
    }
},600), false);


с чем нужна помощь:

1) допустим я откажусь от ClearText и все text*** переменные надо будет сменить на replaceValue

Как отказаться от 350 строк replaceNodeText(allTextNodes.currentNode, text***, replaceValue) а свести всё к "одной" в которой все text*** будут заменены на replaceValue?

2) как все text*** заключить в какие-то "нужные кавычки" чтоб считались типа элементами массива чтобы в п.1 не было привязки к цифрам? и чтоб сколько в дальнейшем этих text не добавляй п.1 был бы валидным?

3) уже "факультативно" а если совместить п.1 и п.2 но не отказываться от ClearText (а равное и replaceValue чтоб больше чем одно)
Как в строку типа text014 = /слова\s+слова/g, не знаю через какой символ(ы) добавить переменную на которую следует менять, а если этой добавки нет, то чтоб как в п.1 менять на replaceValue

всё это в попытке ускорить или понять почему на разных сайтах где одинаково дофига текста так по разному себя ведёт скрипт?

например на ленте и газете меньше секунды а на sport-express.ru больше 30ти на заглавных страницах

а в символах ну никак не на порядки разница. может сама концепция TreeWalker уже не самая быстрая? и есть более-лучше варианты? (не забываем что 350+ проверок\замен)
  • Вопрос задан
  • 37 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы