background.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // background.js
  2. chrome.runtime.onInstalled.addListener(function () {
  3. console.log("插件已被安装");
  4. });
  5. let pageState = 0; // 0 - 未创建,1 - 已创建
  6. let pageInfo = null;
  7. let pageId = "";
  8. chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
  9. if (request.action === "show_popup") {
  10. pageInfo = request;
  11. try {
  12. await chrome.tabs.get(pageId)
  13. } catch {
  14. pageState = 0; // 说明没找到
  15. }
  16. if (pageState === 0) {
  17. chrome.windows.create({
  18. url: chrome.runtime.getURL("page.html"), // 指向你的弹出页面
  19. type: "popup", // 设置为弹出窗口
  20. width: 1000,
  21. height: 750,
  22. focused: true,
  23. left: 100, // 可选,窗口的左边缘
  24. top: 100 // 可选,窗口的上边缘
  25. }, (newTab) => {
  26. pageId = newTab.tabs[0].id;
  27. pageState = 1;
  28. });
  29. }
  30. else {
  31. sendTabMessage(pageId, pageInfo)
  32. }
  33. }
  34. });
  35. // 监听已更新的标签,以找出何时打开了 page.html
  36. chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  37. if (changeInfo.status === 'complete' && tab.url.includes('page.html')) {
  38. sendTabMessage(tabId, pageInfo)
  39. }
  40. });
  41. function sendTabMessage(tabId, data) {
  42. chrome.tabs.sendMessage(tabId, { msgToPopup: "发送页面", data, pageState: pageState });
  43. }
  44. // // background.js
  45. // chrome.runtime.onInstalled.addListener(function () {
  46. // console.log("插件已被安装");
  47. // });
  48. // let jsRequests = [];
  49. // let jsRequestsByTab = {}; // 用于存储每个标签页的请求
  50. // chrome.webRequest.onBeforeRequest.addListener(
  51. // (details) => {
  52. // const tabId = details.tabId; // 获取当前请求的标签页 ID
  53. // const url = details.url;
  54. // let uri = new URL(url);
  55. // if (
  56. // details.initiator &&
  57. // uri.pathname.endsWith(".js") &&
  58. // (uri.protocol.startsWith("http") || uri.protocol.startsWith("https"))
  59. // ) {
  60. // // 确保有个数组来记录当前标签页的请求
  61. // if (!jsRequestsByTab[tabId]) {
  62. // jsRequestsByTab[tabId] = [];
  63. // }
  64. // jsRequestsByTab[tabId].push(url);
  65. // }
  66. // },
  67. // { urls: ["<all_urls>"] }
  68. // );
  69. // chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  70. // if (request.action === "getJsRequests") {
  71. // const tabId = sender.tab.id; // 获取请求来源的标签页 ID
  72. // sendResponse(jsRequestsByTab[tabId] || []);
  73. // }
  74. // });
  75. // // 监听标签页更新(包括刷新)事件以清空请求记录
  76. // chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  77. // if (changeInfo.status === "loading") {
  78. // // 标签页加载完成时清空请求记录
  79. // delete jsRequestsByTab[tabId];
  80. // }
  81. // });
  82. // // 监听标签页关闭事件以清空请求记录
  83. // chrome.tabs.onRemoved.addListener((tabId) => {
  84. // delete jsRequestsByTab[tabId]; // 清空对应标签页的请求记录
  85. // });