(Chrome扩展程序)如何从background.html实用地打开弹出窗口

Dah*_*e80 23 google-chrome google-chrome-extension

提前致谢!

我想要实现的是当我的扩展程序在网页上检测到特殊标记时打开弹出窗口.搜索一段时间后,似乎只有在用户单击扩展名时才能打开弹出窗口.这是真的吗?

或者我可以在浏览器上获取我的扩展程序图标的位置吗?也许我可以在扩展图标下绘制一个窗口并显示,使其看起来就像弹出窗口一样.

Dav*_*vid 12

没有用户点击它就无法打开扩展窗口......但是,您可以在新选项卡中打开扩展弹出页面,如下所示:

1)在清单文件中设置背景页面 ...

"background_page": "background.html",
Run Code Online (Sandbox Code Playgroud)

在这里您将运行代码以查看是否检测到特殊标记...后台页面可以在后台持续运行代码,您可以设置重复循环以检查变量条件是否为真经常...

2)在清单文件中启用选项卡权限 ...

"permissions": [ "tabs" ],
Run Code Online (Sandbox Code Playgroud)

步骤3需要此权限(允许后台页面打开新选项卡)

3)在后台页面中,调用create并指向扩展弹出URL.

if(condition == true){
  chrome.tabs.create({url:"popup.html"});
}
Run Code Online (Sandbox Code Playgroud)

  • “background_page”不再被识别为清单键 (2认同)

Ale*_*lek 9

这家伙想要相反的效果,不能打开他的弹出窗口.看看他的代码打开你的弹出页面;)


小智 6

你不能伪造点击浏览器动作,但你仍然可以像往常一样从后台脚本打开弹出页面,它会按预期工作.例如,您的浏览器操作的html页面是"popup.html"

window.open("popup.html", "extension_popup", "width=300,height=400,status=no,scrollbars=yes,resizable=no");
Run Code Online (Sandbox Code Playgroud)

注意:您只能从后台脚本(事件页面)调用它.因此,您需要在清单文件中注册后台脚本并添加一个事件处理程序,这将打开弹出窗口.您可以在此处阅读有关事件页面的更多信息https://developer.chrome.com/extensions/event_pages

  • 在清单V3中:窗口在background.js中给出未定义 (3认同)

ser*_*erg 5

如果通过弹出窗口表示浏览器操作弹出窗口,那么您是正确的,则无法以编程方式将其打开。

您可以根据需要通过内容脚本将弹出窗口中所需的任何内容直接嵌入到页面中。我认为这将是最好的解决方案。

如果您的弹出窗口没有任何花哨的内容,那么桌面通知可能就足够了。

创建一个新窗口并将其放在url栏下将是一个很尴尬的解决方案,并且不是很友好。

  • 为什么Firefox有openPopup但没有chrome? (3认同)