Firefox隐藏窗口中的iFrame是否包含contentWindow.history?

Firefox隐藏窗口中的iFrame是否包含contentWindow.history?,firefox,firefox-addon,xpcom,chromebug,Firefox,Firefox Addon,Xpcom,Chromebug,我正在尝试在Firefox扩展中使用内容权限运行托管脚本。为此,我在隐藏窗口中创建一个内容iframe,指向提取脚本的html文件。此脚本要求“历史记录”可用,但由于某些原因,在隐藏窗口中创建的iFrame没有历史记录 Chromebug为iframe的contentWindow.history报告此情况: 对象不支持历史记录(nsIDOMHistory) 当脚本不可用时,脚本会给出此错误: 错误:组件返回故障代码:0x80004005(NS\u错误\u故障)[nsIDOMHistory.len

我正在尝试在Firefox扩展中使用内容权限运行托管脚本。为此,我在隐藏窗口中创建一个内容iframe,指向提取脚本的html文件。此脚本要求“历史记录”可用,但由于某些原因,在隐藏窗口中创建的iFrame没有历史记录

Chromebug为iframe的contentWindow.history报告此情况:

对象不支持历史记录(nsIDOMHistory)

当脚本不可用时,脚本会给出此错误:

错误:组件返回故障代码:0x80004005(NS\u错误\u故障)[nsIDOMHistory.length]

有什么想法吗?

默认情况下,A会自动连接会话历史记录,而A不会,但您可以自己手动连接

不要忘记确保在XUL名称空间中创建元素。我相信隐藏的窗口是除Mac之外的关于:空白HTML文档。

默认情况下,A会自动连接会话历史,而A不会,但您可以自己手动连接


不要忘记确保在XUL名称空间中创建元素。我相信隐藏窗口是关于:空白的HTML文档,Mac上除外。

原来隐藏窗口的URL是关于:空白的,但这显然是一个安全漏洞,所以现在是这样resource://gre/res/hiddenWindow.html (或resource://gre-resources/hiddenWindow.html (在后备箱上)因此,它没有XUL浏览器元素所需的chrome权限来连接自己的会话历史,甚至访问自己的内容文档


即使使用XUL iframe元素,您也必须小心,因为它的属性都不起作用,这也是因为它在运行时没有chrome权限。因此,您必须执行iframelement.boxObject.QueryInterface(Components.interfaces.nsIContainerBoxObject)、docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)、getInterface(Components.interfaces.nsIDOMWindow)等操作来检索其内容窗口。

结果是,隐藏窗口的URL过去大约为:空白,但这显然是一个安全漏洞,现在也是resource://gre/res/hiddenWindow.html (或resource://gre-resources/hiddenWindow.html 因此它没有XUL浏览器元素所需的chrome权限,以便能够连接自己的会话历史,甚至访问自己的内容文档


即使使用XUL iframe元素,您也必须小心,因为它的属性都不起作用,这也是因为它在运行时没有chrome权限。因此,您必须执行iframelement.boxObject.QueryInterface(Components.interfaces.nsIContainerBoxObject)、docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)、getInterface(Components.interfaces.nsIDOMWindow)等操作才能检索其内容窗口。

我尝试过,但结果相同。这是我用于此的代码,其中doc是隐藏窗口的文档。var browser=doc.createElementNS(XUL_NS_URI,'browser')browser.setAttribute('type','content');setAttribute('disablehistory',false);setAttribute('src',url);doc.documentElement.appendChild(浏览器);我似乎有一个历史对象连接到xul浏览器,但每次尝试使用.back()或go(-1)时都会引发异常。你知道是什么引起的吗?我试过了,结果也一样。这是我用于此的代码,其中doc是隐藏窗口的文档。var browser=doc.createElementNS(XUL_NS_URI,'browser')browser.setAttribute('type','content');setAttribute('disablehistory',false);setAttribute('src',url);doc.documentElement.appendChild(浏览器);我似乎有一个历史对象连接到xul浏览器,但每次尝试使用.back()或go(-1)时都会引发异常。你知道是什么引起的吗?试图在更新我的帖子时进行编辑,但当我尝试时堆栈溢出会出错。关于隐藏的窗口,你是对的。我的扩展在隐藏窗口中有一个chrome iframe(用作单例js上下文)。我可以在那里嵌入浏览器并手动连接会话历史记录。它起作用了!谢谢。尝试在更新我的帖子时进行编辑,但尝试时堆栈溢出会出错。关于隐藏的窗口,你是对的。我的扩展在隐藏窗口中有一个chrome iframe(用作单例js上下文)。我可以在那里嵌入浏览器并手动连接会话历史记录。它起作用了!非常感谢。