【问题标题】:How does the Google Hangouts extension create the panel window?Google Hangouts 扩展程序如何创建面板窗口?
【发布时间】:2012-07-23 14:25:14
【问题描述】:

Doc 说如果你想创建一个面板窗口,你应该使用

chrome.windows.create({...,type:"panel"}, function callback)

同时,它说“指定要创建的浏览器窗口类型。'panel' 类型会创建一个弹出窗口,除非设置了 '--enable-panels' 标志。”

所以你应该去“chrome://flags”手动更改它。但是Google Hangouts 可以在不这样做的情况下创建面板。它是怎么做到的?

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    Google Hangouts extension(以前称为“Google 聊天”)明确为 whitelisted in the source code,即使未设置 --enable-panels 标志,它也可以使用面板功能:

    bool PanelManager::ShouldUsePanels(const std::string& extension_id) {
     ...
        return CommandLine::ForCurrentProcess()->HasSwitch(
            switches::kEnablePanels) ||
            extension_id == std::string("nckgahadagoaajjgafhacjanaoiihapd") ||
     ...
    

    【讨论】:

    • @Tom 哦,是的。不管你喜不喜欢,这都是事实。
    • 这不是 Google 所期望的。首先他们使用 Chromium,现在在源代码中将他们的扩展列入白名单
    • @RishiDua 这不是唯一被列入白名单的扩展...... Chromium 有几个强大的扩展 API,这些 API 是私有的、未记录的,并且常规扩展开发人员无法使用。
    • @RobW 谢谢 rob,这是一个非常好的发现。是否有关于我们非 Google 开发人员何时可以使用面板的任何信息?我不想告诉我的用户需要下载 Chrome 开发版:/(即使在最新的 chrome 版本 35.0.1897.2 m 上启用了标志,我也无法让面板工作,仅在开发版上。)
    • @RobW 我以为我做到了......现在它可以在稳定频道上运行。尽管如此,我不认为这是我要求最终用户做的事情(尽管有一些扩展解释了如何在他们的扩展信息中启用该标志)我想知道什么时候 \ (如果?)它将默认启用。
    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多