2012-10-01 35 views
2

我正在通過XPCOM上的XUL School入門。我無法訪問組件。不管我什麼組件來訪問,例如(從MDN):無法訪問任何XPCOM組件

// xpconnect to cookiemanager 
// get the cookie manager component in JavaScript 
var cmgr = Components.classes["@mozilla.org/cookiemanager;1"].getService(); 
cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager); 

我不斷收到錯誤「類型錯誤:Components.classes是不確定的。」其他地方說這可能是其他附加組件有問題的問題,所以我以安全模式重新啓動Firefox,但我仍然遇到了這個問題。

這裏的其他問題與此類似,說明組件需要在清單文件中註冊;然而,這些似乎是參考用戶添加的組件。這是這種情況嗎?我究竟做錯了什麼?

編輯:我安裝了XPCOMViewer,我可以看到組件在那裏。當我使用XPCOMViewer生成訪問該組件的JavaScript時,它提供了與上面發佈的完全相同的內容。這個世界正在發生什麼?

+0

你需要'要求( '鉻')'? –

+0

我的特權代碼通常開始'常量{抄送,CI,銅} =要求(「鉻」);' –

回答

1

試試這個:

const {Cc,Ci,Cu} = require("chrome"); 
var cmgr = Cc["@mozilla.org/cookiemanager;1"].getService(); 
cmgr = cmgr.QueryInterface(Ci.nsICookieManager); 
+1

我得到的錯誤'的ReferenceError:要求不defined' –

+1

我認爲有3米不同的範圍。 「組件」(等)已經定義好了,或者你可以做'require(...)',或者你在非特權的代碼中根本無法使用這些接口。 –

+0

感謝大衛,我明白了。 –