ポップアップ/ポップオープンメニューを取得して、現在のページ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と同じです。