【问题标题】:Cannot get the tab ID of the background page in Chrome extension无法在 Chrome 扩展中获取背景页面的标签 ID
【发布时间】:2012-04-29 23:03:05
【问题描述】:

我正在编写一个 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);
    }
);

但是,handle_click 函数内的console.log('tab ', tab) 始终显示 getSelected 选项卡是单击上下文菜单的选项卡,而不是背景页面。所以我想知道在这种情况下如何获取背景页面的标签ID。或者有没有其他更好的方式在对话窗口和背景页面之间进行通信?

非常感谢!

【问题讨论】:

    标签: dialog google-chrome-extension


    【解决方案1】:

    背景页面没有tabId,因为它们不是标签。

    要向后台页面发送消息,请使用chrome.extension.sendRequestextension 而不是tabs)。

    附言。 Full demo

    【讨论】:

    • 嗨,Rob,还有一个问题。现在我可以使用chrome.extension.getBackgroundPage将对话窗口(由window.showModalDialog打开)中的用户名和密码发送回后台页面,但我必须输入并提交用户名和密码两次才能关闭对话窗口。我不知道有什么问题。 dialog.html 是here。谢谢!
    • @chaohuang 按Ctrl+Shift+J打开控制台,看看有没有什么奇怪的事情发生。除了使用window.close(),您还可以使用chrome.extension.sendRequest,并使用提供的sender.tab.id 使用chrome.tabs.remove 关闭它。
    • 我用chrome.tabs.create替换了window.showModalDialog,就没有问题了。我想 Chrome 中有一些关于 window.showModalDialog 的错误。感谢您的耐心帮助。我很感激。
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多