我需要一个隐藏的 iframe 用于所有打开的 Firefox 窗口。
现在我在 XUL 覆盖中创建 iframe,所以它是为每个浏览器窗口创建的。
我认为我应该使用 XPCOM 组件为所有浏览器窗口提供单个 iframe 实例,但我找不到如何从中创建 XUL 元素的方法。
是否可以?
我需要一个隐藏的 iframe 用于所有打开的 Firefox 窗口。
现在我在 XUL 覆盖中创建 iframe,所以它是为每个浏览器窗口创建的。
我认为我应该使用 XPCOM 组件为所有浏览器窗口提供单个 iframe 实例,但我找不到如何从中创建 XUL 元素的方法。
是否可以?
您可以在隐藏窗口内创建一个框架:
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 代码模块。