2011-08-20 64 views
0

我想做一些看起來應該相當簡單的事情,但是我無法讓它工作。我無法理解Google Chrome擴展程序。請幫忙。

所有我希望它做的是,當在彈出按鈕被點擊我想單詞「你好」登錄到控制檯。目前沒有任何反應。沒有錯誤信息。根本不值一提。

這裏是我的manifest.jason文件

{ 
    "name": "Content Script", 
    "version": "1.0", 
    "description": "Experiments with content scripts.", 
    "permissions": [ 
     "tabs", "http://*/*", "https://*/*" 
    ], 
    "browser_action": { 
     "default_icon": "icon.png", 
     "popup": "popup.html" 
    } 
} 

這裏是我的popup.html

<h1>Hello</h1> 

<script> 
function changeField() { 
    chrome.tabs.getSelected(null, function(tab) { 
     chrome.tabs.sendRequest(tab.id, {"code": "sayHello"}); 
    }); 
} 
</script> 

<button onclick="changeField();">Click</button> 

這裏是我的contentscript.js

function sayHello() { 
    console.log("Hello"); 
} 


chrome.extension.onRequest.addListener(
    function(request, sender, response) { 
     if(request.code == 'sayHello') { 
      sayHello(); 
     } 
    } 
); 

我一直在閱讀文檔,但他們似乎跳過了很多東西。如果有人能解釋爲什麼這不起作用,我會永遠感激。

+0

你能夠點擊彈出按鈕嗎?另外,你正在檢查哪個頁面的控制檯? –

+0

你的代碼看起來不錯,它應該在理論上起作用 – wukong

+0

@Digital Plane是的,我點擊按鈕,沒有任何反應。我正在通過右鍵單擊彈出窗口的圖標並單擊檢查彈出窗口來查看控制檯。 – MrMisterMan

回答

0

你沒有注入你content script的網頁,其中console生活。 添加content_scripts段的manifest.json文件。

a reference of manifest.json file上的Chrome擴展程序的官方網站。

{ 
    "name": "Content Script", 
    "version": "1.0", 
    "description": "Experiments with content scripts.", 
    "permissions": [ 
     "tabs", "http://*/*", "https://*/*" 
    ], 
    "browser_action": { 
     "popup": "popup.html" 
    }, 
    "content_scripts":[{ 
     "matches":["http://*/*"], 
     "js":["content_script.js"] 
    }] 
} 
+0

謝謝。我已經這樣做了,但它仍然沒有任何作用。 – MrMisterMan

+0

@MrMisterMan我自己測試它,它按預期工作,你可以在http://hellohtml5.googlecode.com/files/extension_sample.zip下載。您的代碼未被修改。 – wukong

+0

謝謝你,你是對的。一旦我將'content_scripts'字段添加到它正在工作的清單文件中。但是我看不到這個,因爲我正在檢查彈出窗口的控制檯,而不是內容腳本運行的頁面的控制檯。 D'哦!謝謝你的幫助。 – MrMisterMan