define(function (require, exports, module) { var param = require("../data.js"); exports.targetId = window.targetExtensionId; var EventObject = require("./EventObject.js"); var Port = function () { EventObject.apply(this); var port = chrome.runtime.connect(exports.targetId, { name: "12306Chat" }); var that = this; var connected = true; port.onMessage.addListener(function (m) { if (!m || !m.action) return; that.fireEvent(m.action, m.detail || null); }); port.onDisconnect.addListener(function () { that.fireEvent("disconnect"); }); this.postMessage = function (action, detail) { port.postMessage({ action: action, detail: detail || null }); }; Object.defineProperty(this, "connected", { get: function () { return connected; } }); return this; }; Port.prototype = Object.create(EventObject); Port.constructor = Port; var _port; Object.defineProperty(exports, "port", { get: function () { return _port || (_port = new Port()); } }); exports.postMessage = function (message) { exports.port.postMessage(message); }; exports.sendMessage = function (m, response) { if (!exports.targetId) throw "extension not connected."; chrome.runtime.sendMessage(exports.targetId, m, response || function () { }); }; exports.track = function (type, values) { /// 发出跟踪记录 chrome.runtime.sendMessage(exports.targetId, { action: "track", detail: { type: type, values: values } }, function () { }); //百度统计 if (window._hmt && type !== param.trackTypes.OPEN_PAGE_INDEX && type !== param.trackTypes.JOIN_CHAT && type !== param.trackTypes.EXIT_CHAT) { try { window._hmt.push(['_trackEvent', '12306_' + type, 'actionreport', '', '']); } catch (e) { } } }; window.port = exports; });