私はChrome拡張機能を作成しています。ユーザにはユーザー名とパスワードを入力できるダイアログウィンドウがあり、これをバックグラウンドページに戻して送信しますOAuth 2.0でのトークンのリクエストChrome拡張機能のバックグラウンドページのタブIDを取得できません
<script>
function usrpwd(){
var up = {};
up.usr = document.login_form.usr.value;
up.pwd = document.login_form.pwd.value;
chrome.tabs.sendRequest(window.dialogArguments,up);
window.close();
}
</script>
window.dialogArguments
は、タブIDであると考えられる。
背景ページに戻って、ダイアログウィンドウからユーザ名とパスワードを送信するために、私は(ダイアログウィンドウの.htmlファイル内の)次のコードを使用しました拡張機能の背景ページのダイアログウィンドウが
chrome.contextMenus.create({
"title" : "show Modal Dialog",
"contexts" : ["all", "page"],
"onclick": handle_click
});
function handle_click(){
chrome.tabs.getSelected(null, function(tab){
console.log('tab ', tab);
window.showModalDialog("login_popup.html", tab.id, "dialogHeight:300px; dialogLeft:200px;");
});
}
によって背景ページに開かれ
そしてtab.id
は、背景ページのIDであるために仮定され、そしてそれは、ダイアログウィンドウに渡され、window.dialogArguments
に割り当てられます。また、背景ページで、ユーザー名とパスワードがによって受信され
、しかし
chrome.extension.onRequest.addListener(
function(request){
console.log("Username: ", request.usr);
console.log("Username: ", request.pwd);
}
);
は、handle_click
関数内console.log('tab ', tab)
は常にgetSelected]タブには、コンテキストメニューをクリックしまったタブ、ではないことを示しています背景ページ。だから私はこの場合にバックグラウンドページのタブIDを取得する方法が不思議です。または、ダイアログウィンドウとバックグラウンドページ間で通信するための他の優れた方法はありますか?
ありがとうございます!
localstorageを使用する必要がありますか? – chaohuang