如果我打开扩展弹出窗口,然后打开另一个窗口或选项卡,如果我返回弹出窗口,该窗口或选项卡不会保持打开状态。有没有办法强迫它,使弹出窗口保持打开?
wz8daaqr1#
作为用户,您当前无法强制弹出窗口保持打开状态。这是UI团队做出的UI决定。如果您希望强制设置,您可以通过其他方式显示此设置,方法是更改弹出窗口图标、在请求时打开新选项卡或注册新的弹出窗口视图。作为开发人员,检查弹出窗口,它将保持打开状态。
zhte4eai2#
除非你是在开发者模式下,否则你无法阻止Chrome弹出窗口关闭。不过,你可以考虑以下替代方案:
在popup.html文件中,加载一个运行以下命令的Javascript文件:
popup.html
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,弹出窗口将被重用。
normal_popup.html
bxfogqkk3#
在这里的常见问题解答中:https://developer.chrome.com/docs/extensions/mv3/faq/#faq-persist-popups当用户关注浏览器中弹出窗口之外的某个部分时,弹出窗口会自动关闭。用户单击离开后,无法保持弹出窗口打开。
gg58donl4#
正如其他人所说,这是对弹出UI的故意限制。相反,你可以在页面中注入一些HTML,将你想要的弹出内容加载到一个悬停在现有页面上的元素中。你必须自己实现关闭功能,但它会持续存在。例如,看看keyframes.app是如何做到的:https://github.com/mitchas/Keyframes.app/blob/master/Keyframes.app%20(Extension)/src/inject/ui.js
keyframes.app
nuypyhwy5#
如果您在“chrome://flags/#enable-panel”中启用面板,您可以使用以下命令:
chrome.windows.create({ url:"popup.html", type:"panel", width:300, height:200 });
打开一个面板窗口,只要你不把它从屏幕底部移开,它就会一直显示在屏幕顶部。
wlzqhblo6#
解决此问题的最佳方法是:
或者按CTRL+Shift+I一个新的窗口将打开与开发人员工具...只要保持该窗口打开,弹出窗口将永远不会关闭。
CTRL+Shift+I
lx0bsm1f7#
This answer到How do I prevent Chrome developer tools from closing when the current browser window closes?在我的情况下非常有帮助:这不是一个完美的解决方案,但您可以通过选中以下位置的复选框在事件Window.close和unload上添加断点:
Developer tools -> "Sources" tab -> Event Listener Breakpoints -> Window -> close
还有
Event Listener Breakpoints -> Load -> unload
尝试标记两者,看看哪一个最适合您
jtw3ybtb8#
一个选项是使用此URL打开新标签页,
chrome-extension://<extension-id>/popup.html
其中<extension-id是扩展的id,可以在扩展管理器中找到。它会因为任何原因而保持打开状态,并且会在后台脚本中输出console.log。一个缺点:因为“tab”弹出窗口总是打开的,所以你可以看到代码从头到尾都在工作。2然而,每当你在浏览器的其他地方有一些事件发生时,“真实的”弹出窗口就会关闭。3当它关闭时,popup.js中的代码会立即终止!4这就是为什么你会看到“tab”和“real”中的console.log是不同的。5小心使用它!
<extension-id
console.log
8条答案
按热度按时间wz8daaqr1#
作为用户,您当前无法强制弹出窗口保持打开状态。这是UI团队做出的UI决定。如果您希望强制设置,您可以通过其他方式显示此设置,方法是更改弹出窗口图标、在请求时打开新选项卡或注册新的弹出窗口视图。
作为开发人员,检查弹出窗口,它将保持打开状态。
zhte4eai2#
除非你是在开发者模式下,否则你无法阻止Chrome弹出窗口关闭。不过,你可以考虑以下替代方案:
改为启动普通弹出窗口:
在
popup.html
文件中,加载一个运行以下命令的Javascript文件:这将在一个普通的弹出窗口中打开扩展中的文件
normal_popup.html
,当它失去焦点时不会关闭。因为name参数是相同的,如果用户再次启动popup.html
,弹出窗口将被重用。bxfogqkk3#
在这里的常见问题解答中:https://developer.chrome.com/docs/extensions/mv3/faq/#faq-persist-popups
当用户关注浏览器中弹出窗口之外的某个部分时,弹出窗口会自动关闭。用户单击离开后,无法保持弹出窗口打开。
gg58donl4#
正如其他人所说,这是对弹出UI的故意限制。
相反,你可以在页面中注入一些HTML,将你想要的弹出内容加载到一个悬停在现有页面上的元素中。你必须自己实现关闭功能,但它会持续存在。
例如,看看
keyframes.app
是如何做到的:https://github.com/mitchas/Keyframes.app/blob/master/Keyframes.app%20(Extension)/src/inject/ui.jsnuypyhwy5#
如果您在“chrome://flags/#enable-panel”中启用面板,您可以使用以下命令:
打开一个面板窗口,只要你不把它从屏幕底部移开,它就会一直显示在屏幕顶部。
wlzqhblo6#
解决此问题的最佳方法是:
或者按
CTRL+Shift+I
一个新的窗口将打开与开发人员工具...只要保持该窗口打开,弹出窗口将永远不会关闭。
lx0bsm1f7#
This answer到How do I prevent Chrome developer tools from closing when the current browser window closes?在我的情况下非常有帮助:
这不是一个完美的解决方案,但您可以通过选中以下位置的复选框在事件Window.close和unload上添加断点:
还有
尝试标记两者,看看哪一个最适合您
jtw3ybtb8#
一个选项是使用此URL打开新标签页,
其中
<extension-id
是扩展的id,可以在扩展管理器中找到。它会因为任何原因而保持打开状态,并且会在后台脚本中输出
console.log
。一个缺点:因为“tab”弹出窗口总是打开的,所以你可以看到代码从头到尾都在工作。2然而,每当你在浏览器的其他地方有一些事件发生时,“真实的”弹出窗口就会关闭。3当它关闭时,popup.js中的代码会立即终止!4这就是为什么你会看到“tab”和“real”中的
console.log
是不同的。5小心使用它!