我正在做的是在每一頁上的負載專門爲網頁創建我的XPCOM組件的一個實例的擴展。使用eval.call()在Firefox的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組件爲好,但如果我有好幾頁打開了,我不知道怎麼會工作..
我以爲我可以在本地有var window = doc.defaultView。但是doc.defaultView.eval未定義出於某種原因,即使我可以舉例來說做到這一點:doc.defaultView.content.document.defaultView.content.document.location.href。我想的東西=) – Karolis 2010-07-14 15:59:07