我页面上的代码停止运行

时间:2017-04-04 17:13:23

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

1 个答案:

答案 0 :(得分:0)

所以事实证明,替换body的innerHTML会阻止我的页面(由于未知原因......这是一个方空间站点)在加载后运行任何代码。因此,上面的代码工作(尽管有一些语法问题),但打破了页面。

我通过按类定位页面上更具体的元素来解决这个问题,这需要一些猜测并检查找到包含我的元素的正确元素(再次,它很难破译方形空间),但现在一切正常。< / p>

工作代码:

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;

我必须添加一个循环来覆盖我在不同类中寻找的单词的多个实例,但是你去了。希望这有助于有人遇到类似的问题。