Google Chrome扩展程序和NPAPI / FireBreath嵌入了网页

时间:2013-05-08 14:59:48

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

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

我开发了一个小的谷歌浏览器扩展,而不是打开网页,我打开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扩展名的窗口时,会以某种方式从中删除用户界面?
  2. 随着插件的开发和index.html与3 <object id="plugin"...>而不是<iframe>,并在嵌入索引的那3个对象内,使用我定义的url打开它们的网页并使其在javascript上设置的X时间后更改网址?
  3. 这是所有的假设,如果我说有关使用npapi执行此操作的可能性或者我应该查看其他地方的任何事情都是愚蠢的。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

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

然而,为了更准确,你可以做#2,但这是一项大量的工作,可能无法按你的预期工作。在npapi插件中加载html页面的唯一方法是将某种Web浏览器嵌入到该插件中; FireBreath有一个undocumented library called WebView可以为你做这个,但它在Windows上使用IE引擎,在Mac上它使用大量黑客使其工作,最终只能在某些情况下正常工作。

你的#1不能以任何一致或可靠的方式完成; npapi插件对浏览器本身一无所知,只知道页面。可能有可能使用Windows API基本上入侵浏览器窗口并更改内容,但它将非常脆弱并且特定于该版本的chrome;如果事情发生了变化,它就会破裂。