Chrome 如何保持谷歌浏览器扩展弹出窗口打开?

9fkzdhlc  于 2023-03-06  发布在  Go
关注(0)|答案(8)|浏览(607)

如果我打开扩展弹出窗口,然后打开另一个窗口或选项卡,如果我返回弹出窗口,该窗口或选项卡不会保持打开状态。
有没有办法强迫它,使弹出窗口保持打开?

wz8daaqr

wz8daaqr1#

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

zhte4eai

zhte4eai2#

除非你是在开发者模式下,否则你无法阻止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,弹出窗口将被重用。

bxfogqkk

bxfogqkk3#

在这里的常见问题解答中:https://developer.chrome.com/docs/extensions/mv3/faq/#faq-persist-popups
当用户关注浏览器中弹出窗口之外的某个部分时,弹出窗口会自动关闭。用户单击离开后,无法保持弹出窗口打开。

gg58donl

gg58donl4#

正如其他人所说,这是对弹出UI的故意限制。
相反,你可以在页面中注入一些HTML,将你想要的弹出内容加载到一个悬停在现有页面上的元素中。你必须自己实现关闭功能,但它会持续存在。
例如,看看keyframes.app是如何做到的:https://github.com/mitchas/Keyframes.app/blob/master/Keyframes.app%20(Extension)/src/inject/ui.js

nuypyhwy

nuypyhwy5#

如果您在“chrome://flags/#enable-panel”中启用面板,您可以使用以下命令:

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

打开一个面板窗口,只要你不把它从屏幕底部移开,它就会一直显示在屏幕顶部。

wlzqhblo

wlzqhblo6#

解决此问题的最佳方法是:

  • 在弹出窗口内右击
  • 单击:检查

或者按CTRL+Shift+I
一个新的窗口将打开与开发人员工具...只要保持该窗口打开,弹出窗口将永远不会关闭。

lx0bsm1f

lx0bsm1f7#

This answerHow 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

尝试标记两者,看看哪一个最适合您

jtw3ybtb

jtw3ybtb8#

一个选项是使用此URL打开新标签页,

chrome-extension://<extension-id>/popup.html

其中<extension-id是扩展的id,可以在扩展管理器中找到。
它会因为任何原因而保持打开状态,并且会在后台脚本中输出console.log
一个缺点:因为“tab”弹出窗口总是打开的,所以你可以看到代码从头到尾都在工作。2然而,每当你在浏览器的其他地方有一些事件发生时,“真实的”弹出窗口就会关闭。3当它关闭时,popup.js中的代码会立即终止!4这就是为什么你会看到“tab”和“real”中的console.log是不同的。5小心使用它!

相关问题