chromeExtension.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import { pageUrl } from "@/http/configAPI.js"
  2. import { guid, iframeID } from "@/uilts/help";
  3. import messageCenter from '@/uilts/messageCenter';
  4. import MESSAGE_ENUM from "@/uilts/messageCenter/messageEnum";
  5. export const LANDING_PAGE = {
  6. name: 'received_log',
  7. url: pageUrl
  8. }
  9. export const LANDING_PAGE_MID = {
  10. name: 'mid',
  11. url: pageUrl
  12. }
  13. export const LANDING_PAGE_JUMP_INFO = {
  14. name: 'jump_info',
  15. url: pageUrl
  16. }
  17. export function setChromeStorage(params, callback) {
  18. try {
  19. if (callback) {
  20. chrome.storage.local.set(params, callback)
  21. } else {
  22. chrome.storage.local.set(params)
  23. }
  24. } catch (error) {
  25. console.error(error)
  26. }
  27. }
  28. export async function getChromeStorageFromExtension(key = '') {
  29. let params = {}
  30. params[key] = ''
  31. return new Promise((res, rej) => {
  32. messageCenter.send({
  33. actionType: MESSAGE_ENUM.IFRAME_GET_EXTENSION_STORGE_DATA,
  34. data: {
  35. iframeID,//用于告诉父窗口会传消息给哪个iframe
  36. key,// storage key
  37. messageID: guid()// 唯一的ID,用于标记回调函数
  38. },
  39. callback: (data) => {
  40. res(data)
  41. },
  42. failback: (e) => {
  43. rej(e)
  44. }
  45. })
  46. })
  47. // console.log(window.parent.window.atest)
  48. // window.postMessage({actionType: 'iframe_test', data: key})
  49. }
  50. export function getChromeStorage(key = '', callback) {
  51. let params = {}
  52. params[key] = ''
  53. if (!callback) {
  54. return new Promise((resolve) => {
  55. chrome?.storage?.local?.get(params, (item) => {
  56. if (item[key]) {
  57. resolve(JSON.parse(item[key]))
  58. } else {
  59. resolve(null)
  60. }
  61. });
  62. })
  63. }
  64. chrome?.storage?.local?.get(params, (item) => {
  65. if (item[key]) {
  66. callback(JSON.parse(item[key]))
  67. } else {
  68. callback(null)
  69. }
  70. });
  71. }
  72. // export function chromeSendMessage() {
  73. // try {
  74. // // chrome.runtime.sendMessage
  75. // } catch {
  76. // }
  77. // }
  78. export function setChromeCookie({
  79. name,
  80. url
  81. }, value_obj) {
  82. chrome.cookies.set({
  83. expirationDate: new Date().getTime() / 10,
  84. name: name,
  85. url: url,
  86. value: encodeURIComponent(JSON.stringify(value_obj)) || ''
  87. })
  88. }
  89. export function getChromeCookie({ name = '', url = '' }, callback) {
  90. try {
  91. chrome.cookies.getAll({ name, url }, (res = []) => {
  92. let _str = ''
  93. if (Array.isArray(res) && res.length) {
  94. _str = res[0].value
  95. }
  96. if (_str) {
  97. callback(JSON.parse(decodeURIComponent(_str)))
  98. } else {
  99. callback(null)
  100. }
  101. })
  102. } catch (error) {
  103. console.error('catch', error)
  104. }
  105. }
  106. export function removeChromeCookie(params, cb) {
  107. let { name, url } = params;
  108. chrome.cookies.remove({ name, url }, () => {
  109. cb && cb
  110. })
  111. }
  112. export function sendChromeTabMessage(params, callback) {
  113. chrome.tabs.getCurrent((tab) => {
  114. chrome.tabs.sendMessage(tab.id, params, callback);
  115. })
  116. }
  117. export function checkIsLogin(callback) {
  118. return new Promise((resolve) => {
  119. getChromeStorage('userInfo', (_userInfo) => {
  120. if (!_userInfo) {
  121. chrome.runtime.sendMessage(
  122. { actionType: "POPUP_LOGIN", data: "" },
  123. (response) => {
  124. console.log("res", response);
  125. }
  126. )
  127. callback && callback()
  128. resolve(_userInfo)
  129. } else {
  130. resolve(_userInfo)
  131. }
  132. })
  133. })
  134. }
  135. let callback_arr = []
  136. export function httpContentToBack(data, callback) {
  137. let callback_id = guid()
  138. chrome.runtime.sendMessage({ actionType: "HTTP_CONTENT_TO_BACK", data, callback_id }, (res) => {
  139. if (res && callback) {
  140. callback_arr.push({
  141. callback_id,
  142. callback,
  143. })
  144. }
  145. })
  146. }
  147. // 再找到它执行
  148. export function httpBackToContentCallBack(req) {
  149. for (let i in callback_arr) {
  150. if (callback_arr[i].callback_id == req.callback_id) {
  151. // 执行
  152. callback_arr[i].callback(req.data)
  153. // 删除
  154. callback_arr.splice(i, 1)
  155. break
  156. }
  157. }
  158. }