0

我正在开发一个项目,我打算在同一个网页中打开多个网页,但不使用<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"...>而不是 的index.html <iframe>,并且在嵌入在索引中的这 3 个对象中,使它们打开带有我定义的 url 的网页,并使其在设置的 X 时间后更改 url javascript?

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

提前致谢。

4

1 回答 1

1

基本上答案是否定的,你不能做任何事情。

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

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

于 2013-05-08T16:24:48.210 回答