2

我需要一个隐藏的 iframe 用于所有打开的 Firefox 窗口。

现在我在 XUL 覆盖中创建 iframe,所以它是为每个浏览器窗口创建的。

我认为我应该使用 XPCOM 组件为所有浏览器窗口提供单个 iframe 实例,但我找不到如何从中创建 XUL 元素的方法。

是否可以?

4

1 回答 1

3

您可以在隐藏窗口内创建一个框架:

var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
                             .getService(Components.interfaces.nsIAppShellService)
                             .hiddenDOMWindow;
var frame = hiddenWindow.document.getElementById("myExtensionFrame");
if (!frame)
{
  var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  frame = hiddenWindow.document.createElementNS(XUL_NS, "iframe");
  frame.setAttribute("id", "myExtensionFrame");
  frame.setAttribute("src", "...");
  hiddenWindow.document.documentElement.appendChild(frame);
}

但是,如果您只需要一个运行全局代码的地方,那么还有更好的方法——比如JavaScript 代码模块

于 2012-06-28T11:38:00.490 回答