繁体   English   中英

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

[英]How to keep Google Chrome Extension popup open?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

或者只需按CTRL+Shift+I

将使用开发人员工具打开一个新窗口......只需保持该窗口打开,弹出窗口将永远不会关闭。

当当前浏览器窗口关闭时,如何防止 Chrome 开发人员工具关闭 对我来说非常有帮助:


这不是一个完美的解决方案,但您可以在事件 Window.close 和卸载上添加断点,方法是打开以下位置的复选框:

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

Event Listener Breakpoints -> Load -> unload

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

我刚刚发现了一个棘手的方法:在导致关闭的进程/函数之前发送一个alert()框使其保持打开状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM