Javascript 如何保持Google Chrome扩展弹出窗口打开?

Javascript 如何保持Google Chrome扩展弹出窗口打开?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,如果我打开扩展弹出窗口,那么我会打开另一个窗口或选项卡,如果我返回弹出窗口,该窗口或选项卡不会保持打开状态 有没有办法强制弹出窗口保持打开状态?作为用户,您当前无法强制弹出窗口保持打开状态。这是UI团队做出的UI决策。如果您想强制设置,您可以通过其他方式显示,如更改弹出图标、在请求时打开新选项卡或新的弹出视图进行注册 作为开发者,检查弹出窗口,它将保持打开状态。在对常见问题的回答中: 当用户关注弹出窗口外的浏览器部分时,弹出窗口将自动关闭。用户单击后,无法保持弹出窗口打开。除非您处于开发人员模式

如果我打开扩展弹出窗口,那么我会打开另一个窗口或选项卡,如果我返回弹出窗口,该窗口或选项卡不会保持打开状态


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

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


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

在对常见问题的回答中:

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

除非您处于开发人员模式。不过,你可以考虑这个替代方案:

改为启动普通弹出窗口: 在
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\u popup.html
,该窗口在失去焦点时不会关闭。由于name参数相同,如果用户再次启动
popup.html
,弹出窗口将被重新使用。

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

chrome.windows.create({
    url:"popup.html",
    type:"panel",
    width:300,
    height:200
});
打开一个面板窗口,只要不从屏幕底部移动它,该窗口将一直位于顶部。

对于我来说非常有用:


这不是一个完美的解决方案,但您可以在“事件”窗口中添加断点。通过在以下位置打开复选框来关闭和卸载:

Developer tools -> "Sources" tab -> Event Listener Breakpoints -> Window -> close


试着将两者都标记出来,看看哪一个最适合你

解决这一问题的最佳方法是:
-在加载项弹出窗口中单击鼠标右键
-检查(或CTRK+Shift+I)


将打开一个新窗口,其中显示inspect。。。只需保持该窗口,插件弹出窗口将永远不会关闭,正如其他人所说,这是对弹出界面的故意限制

相反,您可以向页面中注入一些HTML,将弹出窗口中所需的内容加载到悬停在现有页面上的元素中。您必须自己实现close功能,但它会一直存在


看一看,例如,关键帧。应用程序是如何完成的:

如果没有,我有点高兴它是为oauth windows打开的安装向导。如果它保持打开状态,这比把它放在整页上要好得多。你试过在选项页上做吗?另外,你可能想深入研究chromed bird twitter扩展,看看他们是如何做到的:嗨,Jason,是的,但我希望它出现在弹出窗口中。Chromed bird从其他选项卡或窗口返回时不会保持弹出窗口打开。你在哪里看到这个?好问题。我也有同样的问题。这不是这个问题的答案,即使是官方文件。例如,在被检查时,弹出窗口确实保持打开状态,所以这是一个可怕的答案,但实际上是对这个问题的回答。@irth,你是对的,我更新了对showcase user and developer point of view的回复。此解决方案的唯一问题是,当窗口失去焦点时,窗口将无法保持在顶部。我们还可以使用此新弹出窗口接收消息?此标志从版本54开始不再存在。这里有一个整洁的react样板来完成类似类型的注射,但它不起作用。如果单击新选项卡,弹出窗口将关闭。
Event Listener Breakpoints -> Load -> unload