是否可以在浏览器扩展中的背景和内容脚本之间传输对象?
我希望我的后台脚本来处理我的浏览器内存储。我的内容脚本应该跟踪用户交互并存储它们。因此,如果我的“抽象”存储引擎从后台脚本中获取,我计划使用单例模式来获取实例,以避免在用户记录交互并同时通过浏览器扩展的 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
不是未定义的,如果 google 调试器是可信赖的,但函数未定义,则它是一个对象sayMyName
。