【问题标题】:How to keep Google Chrome Extension popup open?如何保持谷歌浏览器扩展弹出窗口打开?
【发布时间】:2010-11-10 17:00:17
【问题描述】:

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

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

【问题讨论】:

  • 如果没有,我很高兴
  • 它适用于打开 oauth 窗口的设置向导。如果它保持打开状态,这比将其放在整页上要好得多。
  • 您是否尝试过在选项页面上执行此操作?此外,您可能想深入了解 chromed Bird 推特扩展程序,看看他们是如何做到的:chrome.google.com/extensions/detail/…
  • 嗨,Jason,是的,但我希望它出现在弹出窗口中。从另一个选项卡或窗口返回时,Chromed Bird 不会保持弹出窗口打开。你在哪里看到的?
  • 好问题。我也有同样的问题。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

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

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

【讨论】:

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

cannot stop the Chrome pop-up from closing,除非您处于开发者模式。不过,您可以考虑这种替代方法:

改为启动普通弹出窗口:

在您的 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,弹窗将被重用。

【讨论】:

  • 此解决方案的唯一问题是窗口在失去焦点时不会停留在顶部。
  • 我们也可以使用这个新的弹出窗口接收消息?
  • 我们可以做 iframe 之类的大写扩展吗?
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    【解决方案5】:

    如果您在“chrome://flags/#enable-panels”处启用面板,您可以使用类似:

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

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

    【讨论】:

    【解决方案6】:

    解决此问题的最佳方法是:
    - 在插件弹出窗口内右键单击
    - 检查(或 CTRK+Shift+I)

    将打开一个新窗口并进行检查...只需保留该窗口,插件弹出窗口将永远不会关闭

    【讨论】:

    • 不起作用。如果您单击一个新选项卡,弹出窗口将关闭。
    【解决方案7】:

    This answerHow do I prevent Chrome developer tools from closing when the current browser window closes? 对我来说很有帮助:


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

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

    Event Listener Breakpoints -> Load -> unload
    

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

    【讨论】:

      猜你喜欢
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-08-01
      • 2016-08-15
      • 1970-01-01
      相关资源
      最近更新 更多