2017-04-04 90 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; 

我不得不增加一個循環覆蓋我在不同的班級找單詞的多個實例,但你去那裏。希望這可以幫助有人陷入類似的問題。

相關問題