2012-05-01 215 views
26

我只是在它上面書寫Chrome擴展Chrome擴展運行提醒一個Hello World的一切,我的權限指定的網頁加載完成,但它不工作,這是我的腳本特定頁面

文件: manifest.json的

{ 
    "name": "Hello", 
    "version": "1.0", 
    "description": "Says hello to Google", 
    "permissions": ["http://*.google.com/"] 
    "browser_action": { 
    "popup": "Hello.html" 
    } 
} 

文件:的Hello.html

<script language="Javascript"> 
    alert("Hello World"); 
</script> 

回答

43

您正在添加一個瀏覽器操作彈出窗口,它將一個按鈕添加到瀏覽器的右上角。 (這可能是不可見的,因爲您沒有爲它指定圖片,地址欄右側應該有一些空白區域;請嘗試點擊它以在彈出窗口中看到您的​​。)

您想要的是content script。內容腳本可以注入到Chrome加載的每個頁面中。您可以使用清單文件中的matchesexclude_matches子項目來指定哪些頁面可以獲得您的注入腳本。

{ 
    "name": "Hello", 
    "version": "1.0", 
    "description": "Says hello to Google", 
    "permissions": ["tabs", "*://*.google.com/*"], 
    "content_scripts": [ 
    { 
     "matches": ["*://*.google.com/*"], 
     "js": ["hello.js"] 
    } 
    ] 
} 

確保您重新命名​​到hello.js(和擺脫<script>標籤)。

還請注意,我改變了你http://*.google.com/*://*.google.com/*,使其適用於谷歌通過HTTP和HTTPS(和尾*確保它能夠適用於所有網頁上google.com,不只是主頁)。

+1

'tabs'權限是不必要的。事實上,所有的權限都是不需要的,因爲'alert('Hello World!')'不能訪問頁面的DOM。網址格式遵循非常嚴格的規則,請參閱[匹配格式](http://code.google.com/chrome/extensions/match_patterns.html)。 –

+0

哎呀,那些是別的東西的權限;您確實不需要運行內容腳本的權限。 (但是,您在內容腳本中執行的具體操作可能需要權限。) – apsillers

+0

「擺脫'