我正在尝试在我的Firefox扩展中使用content权限运行托管脚本。为此,我在隐藏窗口中创建了一个内容iframe,该窗口指向一个提取脚本的html文件。此脚本要求' history‘可用,但由于某些原因,在隐藏窗口中创建的iframe没有历史记录。
Chromebug为iframe的contentWindow.history报告了这一点:
object does not support history (nsIDOMHistory)
当它不可用时,脚本会给出这个错误:
Error: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.length]
有什么想法吗?
发布于 2010-04-14 05:15:47
原来隐藏窗口的URL过去是关于:空白的,但这显然是一个安全缺陷,所以它现在是resource://gre/res/iddenWindow.html(或主干上的resource://gre-resources/iddenWindow.html),所以它没有XUL浏览器元素所需的chrome特权,以便能够连接它自己的会话历史记录,甚至访问它自己的内容文档。
即使使用XUL iframe元素,也必须小心,因为它的所有属性都不起作用,同样是因为它是在没有chrome权限的情况下运行的。所以你必须做像iframeElement.boxObject.QueryInterface(Components.interfaces.nsIContainerBoxObject).docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow)这样的事情来检索它的内容窗口。
发布于 2010-04-13 07:27:01
默认情况下,A将自动连接会话历史记录,而will不会,但您始终可以手动连接它。
不要忘记确保您的元素是在XUL名称空间中创建的。我相信隐藏的窗口是关于:空白的HTML文档,除了在Mac上。
https://stackoverflow.com/questions/2564044
复制相似问题