44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
define(function (require, exports, module) {
|
|||
|
var EventObject = require("EventObject");
|
|||
|
|
|||
|
var Connector = function () {
|
|||
|
var token = 0;
|
|||
|
var callback = {};
|
|||
|
|
|||
|
this.send = function (type, data, cb, target) {
|
|||
|
/// <summary>发送消息到后台</summary>
|
|||
|
|
|||
|
var args = { type: type, data: data, token: token++ };
|
|||
|
if (cb)
|
|||
|
callback[args.token] = { func: cb, target: target, arg: args };
|
|||
|
window.postMessage({ command: "ccontentScriptConnection", data: args });
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
//回调
|
|||
|
window.addEventListener("message", function (event) {
|
|||
|
if (!event.data || !event.data.command || event.data.command !== "contentScriptConnection")
|
|||
|
return;
|
|||
|
|
|||
|
var data = event.data;
|
|||
|
var result = data.result;
|
|||
|
var destToken = data.token;
|
|||
|
|
|||
|
if (callback[destToken]) {
|
|||
|
var cb = callback[destToken];
|
|||
|
delete callback[destToken];
|
|||
|
if (cb.target) {
|
|||
|
cb.func.apply(cb.target, [result, cb.arg]);
|
|||
|
} else {
|
|||
|
cb.func(result, cb.arg);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
Connector.prototype = Object.create(EventObject);
|
|||
|
Connector.constructor = Connector;
|
|||
|
|
|||
|
return Object.create(Connector);
|
|||
|
});
|