2012-05-21 242 views
0

我是開發Chrome擴展的初學者我遇到如下問題:鉻擴展程序

如何爲當前打開的頁面執行腳本?我想用background.html來做。我已經嘗試運行

document.addEventListener('DOMContentLoaded', exec_fun); 

window.addEventListener('DOMContentLoaded', exec_fun); 

以及在manifest.json註冊backgroung.html執行exec_fun()的功能,但它不能正常工作。我究竟做錯了什麼?

+0

請問您可以發送您的清單,也許更多的代碼?問題可能在那裏。另外,請嘗試檢查您是否已爲此指定了所需的權限(如果需要的話)。 –

回答

1

如果你想有一個腳本在每個頁面上運行,你應該寫一個內容腳本: http://code.google.com/chrome/extensions/content_scripts.html

內容腳本的頁面內運行,這樣你就可以訪問它的DOM,並使用其事件。

另一方面,background.html只在擴展啓動時運行一次(通常在瀏覽器打開時),並且它與任何選項卡或頁面無關。它是你的擴展「操作基礎」。這可不是你想要把你的腳本,但您使用偵聽器捕捉與onUpdated每一頁變化的地方,一個觸發間隔時間標籤的URL變化:

http://code.google.com/chrome/extensions/tabs.html#event-onUpdated

「,也註冊backgroung。 html在manifest.json中執行exec_fun()函數「

你是怎麼做到的?我認爲這不是方法。

+0

不......我剛剛通知我已經在「背景」中註冊了background.html:manifest.json文件的字段來告訴你,錯誤不是因爲這兩個監聽器我都在background.html中添加腳本atg。順便說一下,我可以理解我應該使用內容腳本。謝謝你的答案! –

+0

現在的問題是,我無法使用鉻。* API由於腳本定義爲content_script? –

+0

是的,這是一個安全問題。內容腳本可以訪問DOM,但不能使用(大部分)chrome的API;後臺腳本可以使用Chrome的API,但無法訪問DOM。您的內容腳本應該與您的後臺腳本進行交流:http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication –