Chrome拡張機能を作成しています。この拡張機能には、ユーザーがユーザー名とパスワードを入力できるダイアログのようなウィンドウがあり、OAuth2.0でトークンをリクエストするためにバックグラウンドページに返送されます。
ユーザー名とパスワードをダイアログウィンドウからバックグラウンドページに戻すために、次のコードを使用しました(ダイアログウィンドウの.htmlファイル内)。
<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であると想定されています。
そして、ダイアログウィンドウはによってバックグラウンドページで開かれます
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);
    }
);
ただし、関数console.log('tab ', tab)内ではhandle_click、getSelectedタブが、バックグラウンドページではなく、コンテキストメニューがクリックされたタブであることが常に示されます。そのため、この場合、バックグラウンドページのタブIDを取得する方法を考えています。または、ダイアログウィンドウと背景ページの間で通信するための他のより良い方法はありますか?
どうもありがとう!