我试图让脚本用不同的文字和链接替换我页面上的文字。没有代码,页面工作正常,我可以做一些事情,如添加到购物车,查找产品编号(由鼠标悬停命令驱动)等。代码工作正常,它用一个替换文本链接,但是当我插入代码时,页面不再运行用户输入后的任何代码(即查找产品编号)。
知道为什么这会破坏我的页面吗?
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 :(得分: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;
我必须添加一个循环来覆盖我在不同类中寻找的单词的多个实例,但是你去了。希望这有助于有人遇到类似的问题。