2012-02-02 45 views
1

我的代碼需要在插件啓動時運行,需要查找單詞,然後在發現它時用不同的工作替換它。每當頁面加載時匹配並替換一個單詞

var contents=document.body.innerHTML; 
var idx=contents.search("hello"); 
if(idx) { 
    contents=contents.replace("hey",'<span id="highlight">hey</span>'); 
    document.body.innerHTML=contents; 
    document.getElementById('highlight').scrollIntoView(); 
}; 

但我一直得到錯誤的控制檯

Traceback (most recent call last): 
File "resource://jid1-qntppxcxwbpwlw-at-jetpack/lib/main.js", line 5, in 
var contents=document.body.innerHTML; 
ReferenceError: document is not defined 

回答

0

運行的代碼時,該文件還沒有準備好。在您的body標籤中,您需要將onload='ready();'(或任何您想要調用您的功能),然後在您的腳本中使用您在該函數中編寫的代碼來定義function ready() { }

+1

這只是main.js文件,這意味着我沒有任何html代碼來工作或更改。這將是Firefox中的附加組件,它將更改您連接到的網頁中的單詞。 – user1019214 2012-02-02 20:04:59

2

根據錯誤消息判斷您使用的是附加SDK。您的main.js模塊在單獨的上下文中運行 - 它不附加到任何窗口或文檔。所以變量document當然沒有定義。

您顯然想要更改網頁的內容 - 這就是content scripts的用途。您可以使用page-mod(它將運行正在打開的所有新頁面的內容腳本),或者使用tab.attach()運行現有選項卡的內容腳本。

+0

看起來像URL可能已經改變:[內容腳本](https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts) – 2016-02-06 00:31:47

+1

@DarthContinent:是的,這個答案是舊的。我更新了鏈接。 – 2016-02-06 08:14:17

相關問題