我正在編寫一個Chrome擴展程序,其中有一個類似對話框的窗口讓用戶輸入用戶名和密碼,然後將其發送回後臺頁面OAuth 2.0中對令牌的請求。無法獲取Chrome擴展程序中的後臺頁面的標籤ID
要發送的對話窗口中的用戶名和密碼恢復到後臺頁面,我用下面的代碼(在對話窗口.html文件內):其中window.dialogArguments
應該是標籤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>
的分機的背景頁面。
和對話窗口在後臺頁面通過
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。或者還有其他更好的方法來在對話框窗口和背景頁面之間進行通信嗎?
非常感謝!
我應該使用localstorage嗎? – chaohuang