예제를 읽는 것으로부터 이것은 아주 쉬워야하는 것처럼 보입니다.loadSubScript()에 "targetObj"매개 변수를 사용하려면 어떻게해야합니까?
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는 창 개체로, 의미 상 "적절"합니다. 데이터가 사라질 수있는 위치에 대해 더 많은 테스트를 추가했지만 아직 비어 있습니다. –