從閱讀例子來看,這看起來應該很容易。這裏是我的代碼:如何在firefox擴展中使用「targetObj」參數來loadSubScript()?
rhkTest = {
onPageLoad: function(event) {
var doc = event.originalTarget;
var wnd = doc.defaultView;
var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader);
loader.loadSubScript("chrome://rhkoshi-extension/content/testfoo.js", wnd);
alert('typeof(wnd) = ' + typeof(wnd));
alert('typeof(wnd.window.rhk_test1) = ' + typeof(wnd.window.rhk_test1));
alert('typeof(wnd.window.rhk_test2) = ' + typeof(wnd.window.rhk_test2));
alert('typeof(wnd.window.rhk_test3) = ' + typeof(wnd.window.rhk_test3));
alert('typeof(wnd.rhk_test1) = ' + typeof(wnd.rhk_test1));
alert('typeof(wnd.rhk_test2) = ' + typeof(wnd.rhk_test2));
alert('typeof(wnd.rhk_test3) = ' + typeof(wnd.rhk_test3));
alert('typeof(rhk_test1) = ' + typeof(rhk_test1));
alert('typeof(rhk_test2) = ' + typeof(rhk_test2));
alert('typeof(rhk_test3) = ' + typeof(rhk_test3));
alert('typeof(this.rhk_test1) = ' + typeof(this.rhk_test1));
alert('typeof(this.rhk_test2) = ' + typeof(this.rhk_test2));
alert('typeof(this.rhk_test3) = ' + typeof(this.rhk_test3));
alert('typeof(window.rhk_test1) = ' + typeof(window.rhk_test1));
alert('typeof(window.rhk_test2) = ' + typeof(window.rhk_test2));
alert('typeof(window.rhk_test3) = ' + typeof(window.rhk_test3));
},
onLoad: function(event) {
var appcontent = document.getElementById("appcontent");
if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", rhkTest.onPageLoad, true);
}
},
};
window.addEventListener("load", function(e) { rhkTest.onLoad(e); }, false);
其中testfoo.js包含:
window.rhk_test1 = 'testval1';
rhk_test2 = 'testval2';
var rhk_test3 = 'testval3';
window.alert('Running testfoo.js');
我得到警報 「運行testfoo.js」,所以找到該文件並執行。我還得到一個警告,指出wnd是一個「對象」(如預期的那樣 - 它在別處被初始化)。但是,其他所有警報都會針對各種typeof()調用顯示「未定義」。當然,我不期望所有這些有價值,但我希望至少其中一個可能會顯示的東西。
我的價值觀發生了什麼變化?他們不應該在wnd的屬性嗎?
我在Windows 7上運行Firefox 19.0(如果有的話)。
謝謝您的詳細解答。不幸的是,鑑於你所說的話,我的結果似乎不符合我的預期。我已更新我的問題以反映更完整的示例。正如你所看到的,wnd是一個窗口對象,希望你的意思「適當」。我已經添加了更多的測試數據可能已經走了,但我仍然空着。 – 2013-03-04 13:36:38