Фон
На основе сегодняшнего XKCD я создал следующий скрипт:
javascript:var a=document.getElementsByTagName('body')[0].innerHTML;a=a.replace(/Program(\w\w+)*/gmi,'curse').replace(/language/gmi,'word');
Если вы переходите на сайт (например, http://en.wikipedia.org/wiki/Programming_language ) и вставьте приведенный выше код (повторно добавив javascript:
, если требуется), это заменит регулярное выражение в содержимом документа, сохраняя при этом большую часть форматирования, создавая забавное чтение.
Однако это влияет на внешний вид сайта; предположительно, потому что я заменяю innerHTML
, а не только innerText
(наверное, хотя и не уверен).
Я не могу просто заменить innerText, так как все элементы включают в себя внутренний текст своего дочернего элемента; выполнение этого для элемента body удалит все форматирование, а выполнение этого для каждого элемента приведет к дублированию огромного количества контента.
Вопрос
Есть ли способ перебирать все узлы в HTML-документе с помощью (минимального) javascript, заменяя слова в их непосредственных дочерних текстовых значениях, сохраняя при этом их оставшееся содержимое?