5 年間維持しているブラウザー アドオンを持っています。Firefox と Chrome のバージョン間で共通のコードをいくつか共有したいと思います。
Javascript Module Patternを使用することにしましたが、たとえば、ブラウザー固有の設定の読み込み、データの保存、およびその他のブラウザー依存のもので問題が発生しています。
私がやりたいのは、派生したブラウザー固有のサブモジュールで実装できる、オーバーライド可能な仮想メソッドを共有コードで参照することです。
以下は、参照した記事の Tight Augmentation メソッドを使用して、Firebug コンソールで試した、これまでの簡単な例です。
var core = (function(core)
{
// PRIVATE METHODS
var over = function(){ return "core"; };
var foo = function() {
console.log(over());
};
// PUBLIC METHODS
core.over = over;
core.foo = foo;
return core;
}(core = core || {}));
var ff_specific = (function(base)
{
var old_over = base.over;
base.over = function() { return "ff_specific"; };
return base;
}(core));
core.foo();
ff_specific.foo();
残念ながら、foo() への呼び出しはどちらも「コア」を出力しているように見えるので、根本的な誤解があると思います。
基本的に、私は電話できるようにしたいと思っています:
get_preference(key)
set_preference(key, value)
load_data(key)
save_data(key, value)
各ブラウザが独自の処理を行うようにします。これは可能ですか?それを行うより良い方法はありますか?