[英]File access impossible in Firefox 17.0.1 extension
更新到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);
正如一些評論者所指出的那樣,您可能在錯誤的位置運行代碼(即:非特權,網頁上下文)。 然而,它可能只是一個范圍問題。
如果是范圍界定,請嘗試以下方法:
const {Cc,Ci,Cu} = require("chrome");
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath(filePath);
如果您在錯誤的位置運行,則require
生成錯誤。
最終解決我的問題:最初我還在使用過時的Privilege Manager。 當我試圖從我的代碼中刪除這一行時,它對我不起作用。 問題是:我在家工作,擴展程序不作為擴展程序運行,但是 - 出於懶惰 - 僅作為常規xul文件。 正如Boris Zbarsky和paa已經在上面提到的那樣,你必須在擴展本身中運行代碼才能獲得“chrome”權限。
執行此操作后,運行上述代碼(只需刪除PrivilegeManager行)就可以了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.