如何从JavaScript XPCOM组件创建隐藏的iframe /浏览器?

时间:2012-06-28 10:34:22

标签: firefox-addon xul xpcom

我需要为所有打开的Firefox窗口提供一个隐藏的iframe。

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

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

有可能吗?

1 个答案:

答案 0 :(得分:3)

您可以在hidden window

中创建一个框架
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 code modules

相关问题