mozIJSSubScriptLoaderを使って現在の実行コンテキストに外部ファイルを読み込ませる
まぁこれ、識者の間ではどうも当たり前の模様です。
mozIJSSubScriptLoaderを使う
var loader = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader); loader.loadSubScript(url, ctx);
とするとctxオブジェクトにwithした状態と同等で外部のソースを引っ張る事が出来ます。
ctxを省略すると、現在のコンテキストになります。
サンプル
/home/zigorou/Foo.jsなどに、
var Foo = function() {}; Foo.prototype = { name: function() { alert("ZIGOROu"); } };
/home/zigorou/FooSubScript.jsなどに
function url() { alert("http://d.hatena.ne.jp/ZIGOROu/"); }
などとして、
loader.loadSubScript("file:///home/zigorou/Foo.js"); loader.loadSubScript("file:///home/zigorou/FooSubScript.js", Foo.prototype);
なんてやるとprototype拡張を行う事が出来ます。Foo.prototype.toSource()などで確認してみて下さい。prototypeにurlと言うfunctionが追加されているはずです。