Код на моей странице останавливает выполнение кода на странице
Я пытаюсь получить скрипт для замены текста на моей странице другим текстом и ссылкой. Без кода страница работает нормально, и я могу делать такие вещи, как добавление в корзину, поиск номера продукта (который управляется командой 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;
Мне пришлось добавить цикл, чтобы охватить несколько экземпляров слова, которое я ищу в разных классах, но все готово. Надеюсь, что это помогает кому-то застрял на аналогичной проблеме.