Javascript 如何使用特权代码中的Dom文件API?

Javascript 如何使用特权代码中的Dom文件API?,javascript,firefox,firefox-addon,gecko,Javascript,Firefox,Firefox Addon,Gecko,我正在开发一个无重启的firefox插件。使用FirefoxDeveloperEdition v36。声明您可以将文件导入为: const {File, Services} = Cu.import('resource://gre/modules/Services.jsm', {}); 但显然不会导出文件对象。我还尝试: new contentWindow.File( filename ) 但这给出了一个非常描述性的NS\u错误\u失败 欢迎提供任何线索,谢谢找到解决方法: const { S

我正在开发一个无重启的firefox插件。使用FirefoxDeveloperEdition v36。声明您可以将
文件导入为:

const {File, Services} = Cu.import('resource://gre/modules/Services.jsm', {});
但显然不会导出文件对象。我还尝试:

new contentWindow.File( filename )
但这给出了一个非常描述性的NS\u错误\u失败

欢迎提供任何线索,谢谢找到解决方法:

const { Services } = Cu.import('resource://gre/modules/Services.jsm', {})

// And you're holding on to the constructor straight away
//
var domfile = Services.appShell.hiddenDOMWindow.File( filename )
同时,我找到了另一个解决方法:

// Where window is a contentWindow.
//
var domWindowUtils = window.QueryInterface( Ci.nsIInterfaceRequestor)
                     .getInterface( Ci.nsIDOMWindowUtils)

var FileUtils = Cu.import("resource://gre/modules/FileUtils.jsm").FileUtils

var nsifile = new FileUtils.File( fileName )
var domfile = domWindowUtils.wrapDOMFile( nsifile )
这两种方法都是一种变通方法,因为它们意味着您需要一个加载的窗口。目前,我们无法在没有窗口的情况下获得它的接口。

找到了一个解决方法:

const { Services } = Cu.import('resource://gre/modules/Services.jsm', {})

// And you're holding on to the constructor straight away
//
var domfile = Services.appShell.hiddenDOMWindow.File( filename )
同时,我找到了另一个解决方法:

// Where window is a contentWindow.
//
var domWindowUtils = window.QueryInterface( Ci.nsIInterfaceRequestor)
                     .getInterface( Ci.nsIDOMWindowUtils)

var FileUtils = Cu.import("resource://gre/modules/FileUtils.jsm").FileUtils

var nsifile = new FileUtils.File( fileName )
var domfile = domWindowUtils.wrapDOMFile( nsifile )
这两种方法都是一种变通方法,因为它们意味着您需要一个加载的窗口。目前,我们无法在没有窗口的情况下获得它的界面。

尝试以下方法:

Cu.importGlobalProperties(["File"]);
试试这个:

Cu.importGlobalProperties(["File"]);

我把它放在MDN上,我从StackOverflow主题中得到:我刚刚测试了它,你是对的,它不再工作了。我把它放在MDN上,我从StackOverflow主题中得到:我刚刚测试了它,你是对的,它不再工作了。我们希望看到一个解决方案,而不是解决办法。这两者都取决于等待
窗口加载。因此,任何人看到这一点,请提供一个解决方案,如果你可以:)我们希望看到一个解决方案,而不是权宜之计。这两者都取决于等待
窗口加载。因此,任何人看到这一点,请提供一个解决方案,如果你可以:)哇,这对我来说非常酷!这是否与导入类似,因为它只是一个指针?是否必须等待任何窗口加载?不需要等待窗口加载。这种方法唯一的缺点是它不适用于任意DOM全局变量;有一个非常具体的属性列表(GlobalProperties::Parse)。非常感谢,MDN有时可能是一个迷宫实际上,这对我不起作用。当尝试实例化文件对象时,我得到一个异常,其属性如下:
message:,result:2147500037,name:“NS\u ERROR\u FAILURE”
。我在使用contentWindow.File时遇到了同样的错误。事实上,我现在在hiddenDOMwINDOW方法上也遇到了同样的问题,尽管这在以前是有效的……哇,这对我来说非常酷!这是否与导入类似,因为它只是一个指针?是否必须等待任何窗口加载?不需要等待窗口加载。这种方法唯一的缺点是它不适用于任意DOM全局变量;有一个非常具体的属性列表(GlobalProperties::Parse)。非常感谢,MDN有时可能是一个迷宫实际上,这对我不起作用。当尝试实例化文件对象时,我得到一个异常,其属性如下:
message:,result:2147500037,name:“NS\u ERROR\u FAILURE”
。我在使用contentWindow.File时遇到了相同的错误。事实上,我现在在hiddenDOMwINDOW方法中也遇到了相同的问题,尽管这在以前是有效的。。。