【问题标题】:Google Chrome Extension and NPAPI/FireBreath embed webpagesGoogle Chrome 扩展和 NPAPI/FireBreath 嵌入网页
【发布时间】:2013-05-08 14:59:47
【问题描述】:

我正在开发一个项目,我打算在同一个网页中打开多个网页,但不使用<iframe>。我过去曾尝试使用<iframes>,但我通常最终会导致浏览器 UI 锁定网页,因此我一直在尝试寻找替代方案。

我开发了一个小型 google chrome 扩展程序,而不是打开网页,而是在我想要的位置打开 chrome.windows,它工作正常,但我不希望它们周围有任何 UI,比如标题栏和按钮对于我定义的尺寸,有点“全屏”。

chrome.windows.create({ url: app.src, left: wleft, top: wtop, width: wwidth, height: wheight, focused: false, type: "popup" }, function(tab) {
    self.windowid = tab.id;
    console.log('Window ID is: ' + self.windowid);
    //chrome.windows.update(tab.id, { focused: true, state: "maximized" })
});

在研究 chrome 扩展 API 时,我阅读了一些有关 NPAPI 的内容,并通过更多研究发现了有关 FireBreath 的信息。由于我从未对此做过任何事情,因此我怀疑是否有任何方法或可能性,通过开发插件 npapi/firebreath 来执行以下操作之一:

  1. 打开带有 chrome 扩展的窗口时,以某种方式从中删除 UI?
  2. 随着插件的开发并拥有一个带有 3 个<object id="plugin"...> 而不是<iframe> 的 index.html,并且在嵌入索引的这 3 个对象中,使它们打开带有我定义的 url 的网页并使其更改在javascript上设置的X时间之后的url?

这都是假设,如果我在说任何关于使用 npapi 执行此操作的可能性的愚蠢的话,或者我应该看看其他地方。

提前致谢。

【问题讨论】:

  • 如果您目前无法在 Chrome 中创建 UI 较少的窗口,请尝试功能请求?

标签: javascript plugins google-chrome-extension npapi firebreath


【解决方案1】:

基本上答案是否定的,你不能这样做。

不过,更准确地说,您可以执行 #2,但这是一项巨大的工作,并且可能无法按照您的预期工作。在 npapi 插件中加载 html 页面的唯一方法是将某种 Web 浏览器实际嵌入到该插件中; FireBreath 有一个 undocumented library called WebView 可以为您执行此操作,但它在 Windows 上使用 IE 引擎,在 Mac 上它使用了很多技巧来使其工作,最终只能在某些情况下正常工作。

您的#1 不能以任何一致或可靠的方式完成; npapi 插件对浏览器本身一无所知,只知道页面。可能使用 Windows API 从本质上侵入浏览器窗口并进行更改,但它非常脆弱,并且特定于该版本的 chrome 的实现;如果以后有什么改变,它就会坏掉。

【讨论】:

    最近更新 更多