0

Chrome 拡張機能内から localhost サーバーに投稿しようとしていますが、うまくいかないようです。

ここに私のファイルがあります:

マニフェスト:

{
"name": "Send to server",

"version": "1.1",

"background": { "page": "background.html"},

"permissions": ["experimental", "tabs", "<all_urls>"],

"browser_action": {"name": "Send to server", "default_icon": "icon.png", "default_popup":"popup.html" },

"icons": { "16": "16.png" },

"manifest_version": 2

}

background.html は非常に簡潔で、「http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js」と「background.js」を指すだけです。(JQueryをインクルードしてbackground.jsで使用できるようにするためだけに使用しています。別の方法はありますか?)

background.js:

chrome.tabs.onUpdated.addListener(SendToServer);

function SendToServer(tabId, changeInfo, tab) {
chrome.tabs.getSelected(null, function(tab) { 

    if (changeInfo.status === 'complete'){
        chrome.experimental.infobars.show({
                tabId: tab.id,
                path: "infobar.html"
            });

            var strVar = "A page was loaded";

            alert("Before sending: " + strVar);

            $.post("http://localhost/MyDomain", {var: strVar}, 
                function(strVar ) { alert("Sending..."); }
            );
        }
  })
};

さて、alert("送信前: " + strVar); が行われているので、ここまで元気です。しかし、.post は完了していません。

何か案が?

ありがとう、

4

1 に答える 1

0

バックグラウンド ページをデバッグすると、セキュリティ エラーがあることがわかります。マニフェスト ファイルで明示的に許可していないのに、リモート ソース (ajax.googleapis.com) から JavaScript を読み込もうとしています。そして、jQueryがないと$.post実行できません。デフォルトのコンテンツ セキュリティ ポリシーを緩和する必要があります(必ず https 経由で jQuery をロードしてください)。

実際、この特定のケースで実際にすべきことは、拡張機能に jQuery ファイルを含め、それに応じて .xml にロードすることbacktround.htmlです。内線はウェブサイトではなく、リモート呼び出しは単純な HDD フェッチに比べて時間がかかります。さらに、リモートの JavaScript ファイルを使用すると、インターネットに接続していないときに拡張機能が使用できなくなったり、不安定になったりします。

于 2012-11-02T07:08:20.077 に答える