Light12306/Web12306/js/platform/extensionPort.js
2015-02-08 23:31:05 +08:00

84 lines
1.8 KiB
JavaScript

define(function (require, exports, module) {
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) {
/// <summary>发出跟踪记录</summary>
chrome.runtime.sendMessage(exports.targetId, {
action: "track",
detail: {
type: type,
values: values
}
}, function () { });
//百度统计
if (window._hmt) {
try {
var data = "";
if (values) {
data = values.map(function(s) {
return encodeURIComponent(s);
}).join("&");
}
window._hmt.push(['_trackEvent', '12306', type, data]);
} catch (e) {
}
}
};
window.port = exports;
});