define(function (require, exports, module) { var EventObject = require("EventObject"); var Connector = function () { var token = 0; var callback = {}; this.send = function (type, data, cb, target) { /// 发送消息到后台 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); });