Код на моей странице останавливает выполнение кода на странице

Я пытаюсь получить скрипт для замены текста на моей странице другим текстом и ссылкой. Без кода страница работает нормально, и я могу делать такие вещи, как добавление в корзину, поиск номера продукта (который управляется командой mouseover) и т. Д. Код работает нормально, текст заменяется ссылкой, но когда я вставил код, на странице больше не запускается какой-либо код после ввода пользователя (т. е. поиск номера продукта).

Есть идеи, почему это ломает мою страницу?

window.addEventListener ? 
window.addEventListener("load",Name,false) : 
window.attachEvent && window.attachEvent("onload",Name);
function Name(){
     if (document.getElementsByTagName('body')[0].innerText.indexOf("Text") > 
-1) {
      var Var1 = document.getElementsByTagName('body')[0].innerHTML;
    var Var2 = Var1.replace(/Text/gi,"<a href = 
\"https://www.example.com\">NewText;</a>"); 
    document.getElementsByTagName('body')[0].innerHTML = Var2;

}

}

Первоначально я использовал document.onload, я пробовал window.onload и несколько других обработчиков событий, которые также ломали страницу. Я прочитал, что добавление onload является правильным способом сделать это, и включил это в код, который вы видите здесь, но ни один из этих шагов, которые я предпринял, не решил проблему.

1 ответ

Решение

Таким образом, оказывается, что замена innerHTML тела не позволяет моей странице (по неизвестной причине... это сайт с квадратным пространством) запускать любой код после загрузки. Следовательно, приведенный выше код работал (несмотря на некоторые синтаксические проблемы), но сломал страницу.

Я исправил это, нацеливаясь на более конкретные элементы на странице по классам, что потребовало некоторой догадки и проверки, чтобы найти правильный элемент, содержащий мой элемент (опять же, трудно расшифровать квадратное пространство), но теперь все работает нормально.

Рабочий код:

window.addEventListener ? 
window.addEventListener("load",FuncName,false) : 
window.attachEvent && window.attachEvent("onload",FuncName);
function FuncName(){
    if (document.getElementsByTagName('body')[0].innerHTML.indexOf("word") > -1) 
{
      var Var1 = document.getElementsByClassName('ClassName');    
       for (var i = 0; i < Var1.length; i++){
    var Var2 = document.getElementsByClassName('ClassName')[i].innerHTML;
    var Var3 = Var2.replace(/word/gi,"<a href = 
\"http://www.example.com\">NewWord</a>"); 
    document.getElementsByClassName('ClassName')[i].innerHTML = 
Var3;

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

Другие вопросы по тегам