如何让 Google Chrome 扩展弹出窗口保持打开状态?

IT技术 javascript google-chrome google-chrome-extension
2021-02-24 02:06:23

如果我打开我的扩展弹出窗口,然后我打开另一个窗口或选项卡,如果我返回它,弹出窗口不会保持打开状态。

有没有办法强制它使弹出窗口保持打开状态?

6个回答

作为用户,您目前无法强制弹出窗口保持打开状态。这是 UI 团队做出的 UI 决定。如果您想强制进行设置,您可以通过更改弹出图标、在请求时打开新选项卡或用于注册的新弹出视图来通过其他方式来显示此设置。

作为开发人员,检查弹出窗口,它将保持打开状态。

这不是这个问题的答案,即使它是官方文档。例如,弹出窗口在被检查时确实保持打开状态,所以这是一个可怕的答案,但实际上是对这个问题的答案。
2021-04-16 02:06:23
8 年后......这是一个可怕的设计 IMO。我有几个扩展窗口,它们被渲染为无用,因为我需要将多条数据复制粘贴到它们中才能使它们工作。如果不失去焦点并关闭窗口,这是不可能做到的。艰难时期。
2021-04-21 02:06:23
@irth,你说得对,我更新了我的回复以展示用户和开发人员的观点。
2021-04-28 02:06:23

不能关闭停止在Chrome弹出,除非你是在开发模式下。不过,您可以考虑使用这种替代方法:

改为启动普通弹出窗口:

在您的popup.html文件中,加载一个运行以下代码的 Javascript 文件:

var popupWindow = window.open(
    chrome.extension.getURL("normal_popup.html"),
    "exampleName",
    "width=400,height=400"
);
window.close(); // close the Chrome extension pop-up

这将normal_popup.html在普通弹出窗口中打开扩展程序中的文件,该窗口在失去焦点时不会关闭。由于 name 参数相同,如果用户popup.html再次启动,弹出窗口将被重用

此解决方案的唯一问题是窗口在失去焦点时不会停留在顶部。
2021-05-07 02:06:23
我们可以像资本一扩展那样做 iframe 吗?
2021-05-09 02:06:23
我们也可以使用这个新弹出窗口接收消息?
2021-05-14 02:06:23

在此处回答常见问题解答:http : //developer.chrome.com/extensions/faq.html#faq-persist-popups

当用户关注弹出窗口之外的浏览器的某些部分时,弹出窗口会自动关闭。在用户单击离开后,无法保持弹出窗口打开。

正如其他人所说,这是对弹出式 UI 的故意限制。

相反,您可以将一些 HTML 注入页面,该页面将您想要在弹出窗口中的内容加载到悬停在现有页面上的元素中。您必须自己实现关闭功能,但它会持续存在。

看看例如如何keyframes.app做到的:https : //github.com/mitchas/Keyframes.app/blob/master/Keyframes.app%20(Extension)/src/inject/ui.js

这是一个简洁的反应样板,用于完成类似类型的注入github.com/satendra02/react-chrome-extension
2021-05-14 02:06:23

如果您在“chrome://flags/#enable-panels”启用面板,您可以使用以下内容:

chrome.windows.create({
    url:"popup.html",
    type:"panel",
    width:300,
    height:200
});

打开一个面板窗口,只要您不从屏幕底部移动它,它就会一直保持在顶部。

从版本 54 开始,此标志不再存在。ghacks.net/2016/10/19/google-removes-panel-support-from-chrome
2021-05-09 02:06:23