簡體   English   中英

Firefox 17.0.1擴展中無法訪問文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM