2017-04-04 88 views
1

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

任何想法为什么这打破了我的网页?

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是做这件事的正确方法,并且将它加入到你在这里看到的代码中,但是我所采取的这些步骤都没有解决这个问题。

+0

'function(){'这是一个语法错误,你必须给这个函数一个名字。像'function funcNameHere(){' – Titus

+0

感谢Titus。我在原始代码中使用了该代码,当我为论坛制作一切通用代码时,我只是忘记输入它。我编辑了我的帖子,仍然有问题。 – TomM0419

+0

把你的代码放在这里,你会发现一些问题。 http://jshint.com/ – Yoda

回答

0

所以事实证明,取代body的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; 

我不得不增加一个循环覆盖我在不同的班级找单词的多个实例,但你去那里。希望这可以帮助有人陷入类似的问题。

相关问题