ブラウザ拡張機能内でバックグラウンドスクリプトとコンテンツスクリプトの間でオブジェクトを転送することは可能ですか?
バックグラウンドスクリプトでブラウザ内のストレージを処理したい。私のコンテンツスクリプトは、ユーザーの操作を追跡して保存する必要があります。したがって、ユーザーがインタラクションを記録し、同時にブラウザー拡張機能のUIを介してデータを管理する場合の同期の問題を回避するために、バックグラウンドスクリプトから「抽象」ストレージエンジンのインスタンスを取得するためにシングルトンパターンを使用することを計画しました。
私の最初の試みは次のようになります:
背景スクリプト
var StorageEngine, _StorageEngine;
StorageEngine = (function() {
var _instance;
function StorageEngine() {}
_instance = null;
StorageEngine.getInstance = function() {
return _instance != null ? _instance : _instance = new _StorageEngine;
};
return StorageEngine;
})();
_StorageEngine = (function() {
function _StorageEngine() {}
_StorageEngine.prototype.sayMyName = function(message) {
return 'hello ' + message;
};
return _StorageEngine;
})();
コンテンツスクリプト
(function() {
kango.invokeAsync('StorageEngine.getInstance', function(val) {
var asd;
if (val) {
debugger;
}
asd = val.sayMyName('Alice');
return kango.console.log(asd);
});
}).call(this);
val
未定義ではありませんが、グーグルデバッガーが信頼できる場合はオブジェクトですが、関数sayMyName
は未定義です。