0

ポップアップ/ポップオープンメニューを取得して、現在のページURLに基​​づいてユーザーに異なるコンテンツを表示しようとしていますが、接続を取得できません。Chromeフレームワークのcurrent-tabsのURLにアクセスできるのはbackground.htmlだけであることを読んだので、メッセージパッシング--backgroundを介してcontent-scriptとpopup.jsにこれを伝えようとしています。 htmlはメッセージを受信し、応答に適切な情報を含めます。ポップアップはgetBackgroundPage()を使用できるはずですが、コンテンツインジェクションスクリプトは許可されていないため、両方にメッセージングを使用し、共通の解決策を用意したいと思います。

だから...失敗した接続に関するコンソールメッセージは、私が見ることさえできないいくつかのランダムな実装コードに埋め込まれています。つまり、calの引数に応じて、miscellaneous_bindings:236またはmiscellaneous_bindings:235です。ヒットした場所を表示しようとすると、次のようになります。

chrome-devtools:// devtools / miscellaneous_bindingsのWebページが一時的にダウンしているか、新しいWebアドレスに永続的に移動している可能性があります。

私は自分が何か馬鹿げたことをしていると確信しています。さもなければ私のシステムが台無しになっていますが、どれがわからないのです。私が見た例と質問のほとんどは、ベータリリースチャネル機能を必要とするか、v1.0マニフェストを使用するか、非推奨の関数(2011などの質問)を使用するか、回答を受け入れていません。Chrome 24.0.1312.40 mを使用していて、他の拡張機能を無効にしました。

これが私たちの設定方法です...

popup.html

<!doctype html>
<html>
    <head>
        <title>Working title popup</title>
        <script src="popup.js">
            // nothing allowed in here
        </script>
    </head>
    <body>

    <form>
        <fieldset>
        <button>Demo</button>
        <!--^ push to try again to get response string from background -->
        </fieldset>
    </form>

    </body>
</html>

popup.js:

asky();

function asky(){
        catchersMit=null;
        console.log("Going to get info.");
        // Below causing Port error: 
        //"Could not establish connection. Receiving end does not exist.":
        chrome.extension.sendMessage({msg:"need some info"} //arg1
                                     ,function(response){   //arg2
                                        alert(reponse.msg);
                                        //^ yields undefined in alert window
                                        catchersMit=response;}
                                    );
        //_*_ catchersMit still appears undefined out here.
}

background.html:

<!doctype html>
<html><head><script type="text/javascript">
chrome.extension.onMessage.addListener(

function(message,sender,sendResponse){
                sendResponse( {msg: "info you wanted"} );
} // anonymous (1st parameter) function OUT

); // onRequest listener OUT
</script></head><body></body></html>

マニフェスト.json:

{
  "name": "Extension Working Title",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Coolest functionality.",
        "browser_action": {
    "default_icon": "lnr_icon.png",
        "default_popup": "popup.html"
  },

  "permissions": [ "tabs","http://*/*" ],
  "background": { "page": "background.html" }
}

デバッグが簡単だと思ったので、今はpopup.jsを使用していますが、間違いがなければ、この問題の解決策はcontent-scriptと同じです。

4

1 に答える 1

0

問題のステートメント ( ) から現在のブラウジング タブの URL が必要であると仮定するとI'm trying to get the popup/popopen menu to show the user different content based off the current page-URL、次のコードは現在のブラウジング タブの URL を取得し、必要な情報をフィルタリングするために再生できます。

chrome.tabs.query({
            "status": "complete",
            "currentWindow": true,
            "active": true
        }, function (tabs) {
            for(tab in tabs)console.log(tabs[tab].url);
});

バックグラウンドとブラウザー アクション HTML ページの間でメッセージの受け渡しを追加する必要はありません。

コンテンツ スクリプトはすでに URL にアクセスしています。window.location.href

于 2012-12-15T18:48:55.267 に答える