如何在程序中打开Chrome浏览器扩展的弹出窗口(popup.html)?

37

我使用 Google 扩展程序创建了一个桌面通知,它非常好用:

icon = '';
    var popup = window.webkitNotifications.createNotification(my notification');
            icon, 'Awesome title', 'Click here to view more. ');
    popup.show();

当用户点击桌面通知时,是否有一种方式可以启动实际的 Google 扩展程序弹出窗口(如下图所示)?

弹出窗口 桌面通知

谢谢。


一个可行的方法是在扩展程序清单中设置一个弹出窗口的键盘快捷键,然后使用可执行文件来人为触发该键盘快捷键。有关如何从扩展程序与可执行文件通信的更多信息,请参见本地消息传递 - Miscreant
3个回答

18

简短回答是你不能,但如果你想在新标签页中打开弹出窗口,可以按照以下方式操作:

在调用show之前加入以下代码。

popup.onclick = function() { 
    chrome.tabs.create({url : "popup.html"}); 
    popup.cancel();
}

感谢您的快速回复。 实际上,想法不是在另一个选项卡中打开popup.html,而是像第一张图片所示启动扩展程序。 - lomse
5
请参考https://dev59.com/p2kv5IYBdhLWcg3wnB87。Google开发人员明确表示他们不会允许这种功能。 - Franz Payer

7

我想补充Miscreant的评论。

一个可能有效的方法是在扩展程序的清单中设置弹出窗口的快捷键,然后使用可执行文件来人为触发该快捷键。有关如何从扩展程序与可执行文件进行通信的更多信息,请参见原生消息。

以下是设置打开扩展程序的快捷键的方法。

...
"commands": {
"_execute_browser_action": {
    "suggested_key": {
          "default": "Ctrl+Shift+Y"
        }
}

这里是有关“命令”的API


我从未使用过本地消息,但我在这里找到了一些文档:https://developer.chrome.com/extensions/nativeMessaging - Ambrose Leung
谢谢,我会看一下的!你真是个英雄 :) - onassar
有人成功地使用过这个吗?你遇到过任何问题/它在不同的浏览器中表现一致吗? - Nathan

0
我认为我们只能从Chrome扩展的清单JSON文件中获取选项页面的地址,然后像这样打开地址:chrome-extension://<extensionId>/options.html,这是扩展无法做到的,但需要外部程序来获取选项地址。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接