我需要为所有打开的Firefox窗口提供一个隐藏的iframe。
现在我正在XUL覆盖中创建iframe,因此它是为每个浏览器窗口创建的。
我认为我应该使用XPCOM组件为所有浏览器窗口提供单个iframe实例,但我找不到如何从中创建XUL元素。
有可能吗?
答案 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。