我正在开发一个无需重启的火狐插件。使用 Firefox 开发者版 v36。Dom File API 上的 MDN 页面声称您可以将File
导入为:
const {File, Services} = Cu.import('resource://gre/modules/Services.jsm', {});
但是 Services.jsm 显然不会导出文件对象。我也试过:
new contentWindow.File( filename )
但这给出了一个非常描述性的NS_ERROR_FAILURE。
欢迎任何线索,谢谢
试试这个:
Cu.importGlobalProperties(["File"]);
MDN :: Components.utils.importGlobalProperties
Noitidart 找到了解决方法:
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 )
这两种方法都是一种解决方法,因为它们意味着您需要一个加载的窗口。目前,我们发现没有窗口就无法获得接口。