background.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //此变量用于监听是否加载了新的页面(包括新窗口打开),如果是,增加变量值,用于传回后台。
  2. var tabList = []; //用来记录打开的新的tab的id
  3. var nowTabId = null;
  4. var nowTabIndex = 0; //重要变量!!
  5. const extension = {
  6. ws: null,
  7. };
  8. chrome.storage.local.set({ "parameterNum": 1 }); //修改默认的参数索引值
  9. // chrome.tabs.update(6,{"active":true}) //一行就可以切换标签页
  10. chrome.tabs.onActivated.addListener(function(activeInfo) {
  11. nowTabId = activeInfo.tabId; //记录现在活动的tabid
  12. if (tabList.indexOf(nowTabId) != -1) {
  13. nowTabIndex = tabList.indexOf(nowTabId);
  14. }
  15. });
  16. // 监听来自content-script的消息
  17. chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  18. if (request.type == 0) {
  19. if (tabList.indexOf(sender["tab"]["id"]) < 0) { //元素不存在加入数组
  20. tabList.push(sender["tab"]["id"]);
  21. }
  22. nowTabIndex = tabList.indexOf(nowTabId);
  23. sendResponse({ type: 0, "msg": "Get!" }); //回传一个消息
  24. } else if (request.type == 1) { //前台询问参数索引值
  25. sendResponse({ type: 1, "value": parameterNum }); //回传一个消息
  26. } else if (request.type == 2) {
  27. let message = {
  28. type: 2, //消息类型,2代表键盘输入
  29. message: { "keyboardStr": "{}{BS}" + request.msg } // {}全选{BS}退格
  30. };
  31. extension.ws.send(JSON.stringify(message));
  32. } else if (request.type == 3) {
  33. let tmsg = request.msg;
  34. tmsg.tabIndex = nowTabIndex; //赋值当前tab的id
  35. let message = {
  36. type: 3, //消息类型,3代表元素增加事件
  37. from: 0, //0代表从浏览器到流程图,1代表从流程图到浏览器
  38. message: { "pipe": JSON.stringify(request.msg) } // {}全选{BS}退格
  39. };
  40. console.log(message);
  41. extension.ws.send(JSON.stringify(message));
  42. }
  43. });
  44. // 打开一个 web socket
  45. extension.ws = new WebSocket("ws://localhost:8084");
  46. extension.ws.onopen = function() {
  47. // Web Socket 已连接上,使用 send() 方法发送数据
  48. console.log("已连接");
  49. message = {
  50. type: 0, //消息类型,0代表链接操作
  51. message: {
  52. id: 0, //socket id
  53. }
  54. };
  55. this.send(JSON.stringify(message));
  56. };
  57. extension.ws.onmessage = function(evt) {
  58. evt = JSON.parse(evt.data);
  59. if (evt["type"] == "0") { //0代表更新参数添加索引值
  60. chrome.storage.local.set({ "parameterNum": parseInt(evt["value"]) }); //修改值
  61. }
  62. };
  63. extension.ws.onclose = function() {
  64. // 关闭 websocket
  65. console.log("连接已关闭...");
  66. };