2012-08-01 30 views
15

Chrome拡張機能を初めて使用しています。私はコンテンツスクリプトとのbackground.htmlページの間でやりとりをしようとしています。 background.htmlはコンテンツスクリプトに "hello"というリクエストを送信し、コンテンツスクリプトは "hello background"というアラートで応答する必要があります。しかし、それは起こっていないだけです。マイbackground.htmlコードは次のとおりです。Chrome拡張機能:コンテンツスクリプトとbackground.htmlの間の通信

function testRequest() {   
    chrome.tabs.getSelected(null, function(tab) { 
     chrome.tabs.sendRequest(tab.id, {greeting: "hello"}); 
    });  
} 

content.jsコード:

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) { 
     if (request.greeting == "hello") 
     alert("hello background"); 
    } 
); 

popup.htmlコード:

<!doctype html> 
<html> 
    <head></head> 
    <body> 
     <form> 
      <input type="button" value="sendMessage" onclick="testRequest()" /> 
     </form>  
    </body> 
</html> 

manifest.jsonを

{ 
    "browser_action": { 
     "default_icon": "icon.png", 
     "popup": "popup.html" 
    }, 
    "background": { 
     "page": "background.html" 
    }, 
    "permissions": [ 
     "tabs", 
     "http://*/*", 
     "https://*/*", 
     "notifications", 
     "contextMenus" 
    ], 
    "content_scripts": [ 
     { 
      "matches": ["http://*/*","https://*/*"], 
      "js": ["content.js"] 
     } 
    ], 
    "name": "FirstExtension", 
    "version": "1.0" 
} 

助けてください!

答えて

22

sendRequest/onRequestはクローム20 *MessagesendMessage/onMessageに置き換えられ、それは別のAPIだ、*Requestのためだけの別名ではありません。

あなたは(PPAが更新されないため、多くのUbuntuユーザは、クロム18に残っている)、20クローム<をサポートonRequestsendRequestを使用したい場合

。それ以外の場合は、 *Messageメソッドを使用します。


もう1つの問題は、機能がバックグラウンドページにあり、ポップアップで呼び出しが行われていることです。あなたがchrome.extension.getBackgroundPage()を使用し、ポップアップから背景ページのメソッドを呼び出したい場合、これらは、異なるスコープです:

chrome.extension.getBackgroundPage().testRequest(); 

最後の注意:あなたはマニフェストバージョン1とインラインのイベントハンドラを使用しています。詳細は、http://code.google.com/chrome/extensions/manifestVersion.htmlを参照してください。

+0

ありがとうRob! :) – Chandeep

+0

@ user975234 Tge [onMessage'のドキュメント(http://code.google.com/chrome/extensions/extension.html#event-onMessage)は、実際の状況とは一応一致しません。詳細については、http://stackoverflow.com/a/11811936を参照してください。 –

関連する問題