19

Chrome拡張機能でpopup.jsからbackground.jsにメッセージを送信(および応答を取得)する適切な方法は何ですか? 私が試したすべての方法は、次のようなエラーになります。

「ポート: 接続を確立できませんでした。受信側が存在しません。」

port.postMessage() で chrome.extension.connect() よりも chrome.extension.sendMessage() を使用したいのですが、どちらの方法も機能していないようです。

私がやろうとしているのは、popup.html のボタンを配線して、popup.js の javascript を呼び出すことです。この javascript は、topMost であった currentTab() に関する情報を取得するために background.js を呼び出します (つまり、取得するpopup.html に表示する現在の URL 文字列)

現在、popup.js(ボタンのアクションに接続されています)に次のものがあります。

function getURL()
{
   chrome.extension.sendMessage({greeting: "GetURL"}, 
          function(response) { tabURL = response.navURL });

   $("#tabURL").text(tabURL);
}

background.jsには次のものがあります。

chrome.extension.onMessage.addListener( function(request,sender,sendResponse)
{
    if( request.greeting == "GetURL" )
    {
        var tabURL = "Not set yet";
        chrome.tabs.getCurrent(function(tab){
            tabURL = tab.url;
        });

        sendResponse( {navURL:tabURL} );
    }
}

何か案は?

4

1 に答える 1