javascript - 我的页面上的代码阻止页面上的代码运行

标签 javascript replace onload

我正在尝试获取一个脚本,用不同的文本和链接替换页面上的文本。如果没有代码,页面可以正常工作,我可以执行诸如添加到购物车、查找产品编号(由鼠标悬停命令驱动)等操作。代码可以正常工作,它用链接替换文本,但是当我插入代码时,页面不再运行用户输入后的任何代码(即查找产品编号)。

知道为什么这会破坏我的页面吗?

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 是执行此操作的正确方法,并将其合并到您在此处看到的代码中,但我采取的这些步骤都没有解决问题。

最佳答案

所以事实证明,替换正文的innerHTML会阻止我的页面(出于未知原因......这是一个squarespace网站)在加载后运行任何代码。因此,上面的代码可以工作(尽管存在一些语法问题),但破坏了页面。

我通过按类定位页面上更具体的元素来修复此问题,这需要一些猜测并检查以找到包含我的元素的正确元素(同样,很难破译方形空间),但现在一切正常。

工作代码:

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;

我必须添加一个循环来覆盖我在不同类中查找的单词的多个实例,但是就这样了。希望这可以帮助遇到类似问题的人。

关于javascript - 我的页面上的代码阻止页面上的代码运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43213625/

相关文章:

javascript - 为什么 onload 事件不起作用?

javascript - 如何在 Canvas 圆形切片中添加图像?

Vim:替换函数体内的文本

javascript - 在 window.onload 事件上初始化 Angular

python - 仅替换第一次出现的字符串?

excel - 使用 VBA for Excel 从大范围单元格中删除 'extra' 空格(超过 1 个)的更快方法

javascript - Internet Explorer 10 : $(window). 加载时不等待自定义字体。

javascript - knockoutjs 中的滑动 Action 绑定(bind)

javascript - 如何在不使用mousemove动画万花筒的情况下随机化JS中的backgroundPosition

javascript - jQuery 选择器没有像我预期的那样工作