Firefox 17.0.1扩展中无法访问文件

时间:2013-01-05 14:42:30

标签: javascript file firefox xul

更新到Firefox 17.0.1后,不再支持PrivilegeManager。各种消息来源说,现在可以简单地从代码中删除相应的行,一切都应该正常工作。不幸的是,这不是这种情况。

我总是收到错误: TypeError:Components.classes未定义。是否有关于Components.classes的更改? Mozilla Code Snippets页面(https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O)声明了相同的语法(不使用FileUtils.jsm)。

我的代码:

//netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var file = Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);

file.initWithPath(filePath);

2 个答案:

答案 0 :(得分:0)

正如一些评论者指出的那样,您可能在错误的位置运行代码(即:无特权,网页上下文)。然而,它可能只是一个范围问题。

如果是范围界定,请尝试:

const {Cc,Ci,Cu} = require("chrome");

var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath(filePath);

如果您在错误的地方跑步,require将产生错误。

答案 1 :(得分:0)

最终解决我的问题: 最初我还在使用过时的Privilege Manager。当我试图从我的代码中删除这一行时,它对我不起作用。问题是:我在家工作,扩展程序不作为扩展程序运行,但是 - 出于懒惰 - 仅作为常规xul文件。正如Boris Zbarsky和paa已经在上面提到的那样,你必须在扩展中运行代码才能获得“chrome”权限。

执行此操作后,运行上述代码(只需删除PrivilegeManager行)就可以了!

相关问题