我正在编写一个Chrome扩展程序,其中有一个类似对话框的窗口,允许用户输入用户名和密码,然后将其发送回后台页面,以便在OAuth 2.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。或者是否有更好的方法在对话窗口和背景页面之间进行通信?
非常感谢!
答案 0 :(得分:1)