すべてのページの読み込み時に、そのページ専用の xpcom コンポーネントのインスタンスを作成する拡張機能を作成しています。
私はこのようにします:
var appcontent = document.getElementById("appcontent"); // browser
if(appcontent) {
appcontent.addEventListener("load", onPageLoad, true);
}
var onPageLoad = function(aEvent) {
var doc = aEvent.originalTarget; //this is the reference to the opened page
pages.push(createInstanceOfMyXPCOM(doc));
}
私の質問は、XPCOM コンポーネント内で、そのドキュメントのグローバル コンテキスト内で eval() をどのように使用できるかということです。htmlの通常のjavascriptでこれを行うだけの場合は、次のことができます。
window.eval.call(window, somecode);
問題は、xpcom コンポーネントにウィンドウ変数がない (またはある) ことです。ドキュメントへの参照しかありません。作成時にウィンドウを XPCOM コンポーネントに渡すこともできますが、複数のページを開いている場合、それがどのように機能するかわかりません..