Light12306/Web12306/js/platform/extensionConnect.js
2014-03-14 18:39:06 +08:00

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);
});