From 391f7292e79ce63b84a824e5321c25365f02d5d6 Mon Sep 17 00:00:00 2001 From: go0p Date: Thu, 16 May 2024 23:20:50 +0800 Subject: [PATCH] fix inject --- public/background.js | 36 ++++----------------------- public/socket.js | 59 +++++++++++++++++++------------------------- 2 files changed, 31 insertions(+), 64 deletions(-) diff --git a/public/background.js b/public/background.js index f0af2e1..4b4b3b8 100644 --- a/public/background.js +++ b/public/background.js @@ -1,4 +1,4 @@ -import {ActionType, WebSocketManager} from './socket.js'; +import {ActionType, injectScriptAndSendMessage, WebSocketManager} from './socket.js'; console.info("Chrome Extenstion Background is loaded") @@ -56,38 +56,12 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { break; case ActionType.INJECT_SCRIPT: (async () => { - try { - // 注入 JS 脚本 - await chrome.scripting.executeScript({ - target: {tabId: msg.tabId}, - files: ['content.js'] - }); - - // 发送消息 - const response = await chrome.tabs.sendMessage(msg.tabId, { - type: ActionType.INJECT_SCRIPT, - value: msg.value - }); - - console.log("response", response); - if (response && response.action === ActionType.TO_EXTENSION_PAGE) { - await chrome.runtime.sendMessage(response); - } - } catch (err) { - console.error('Script or CSS injection failed:', err); - } + await injectScriptAndSendMessage(msg.tabId, { + type: ActionType.INJECT_SCRIPT, + value: msg.value + }); })(); break } - }) -const pageFunction = (code) => { - chrome.runtime.sendMessage({code}, response => { - if (response && response.success) { - console.log('Result:', response.result); - } else { - console.error('Error:', response.error); - } - }); -} diff --git a/public/socket.js b/public/socket.js index b4b1195..c60795d 100644 --- a/public/socket.js +++ b/public/socket.js @@ -92,49 +92,42 @@ export class WebSocketManager { return this.socket && this.socket.readyState === WebSocket.OPEN; } - async handleMessage(message) { - console.log("message", message) + handleMessage(message) { message = JSON.parse(message); if (message && message.type === "eval") { - console.log("msg ", message) - const code = message.code; - // try { - // const [tab] = await getTab(); - // chrome.runtime.sendMessage({ - // action: ActionType.INJECT_SCRIPT, tabId: tab.id, value: { - // mode: "CONTENT_EVAL_CODE", code: code, - // }, - // }); - // } catch (error) { - // console.log(error.toString()) - // } - try { + (async () => { const [tab] = await getTab(); - // 注入 JS 脚本 - await chrome.scripting.executeScript({ - target: {tabId: tab.id}, - files: ['content.js'] - }); - - // 发送消息 - const response = await chrome.tabs.sendMessage(tab.id, { + await injectScriptAndSendMessage(tab.id, { type: ActionType.INJECT_SCRIPT, value: { - mode: "CONTENT_EVAL_CODE", code: code, + mode: "CONTENT_EVAL_CODE", code: message.code, } }); - - console.log("response", response); - if (response && response.action === ActionType.TO_EXTENSION_PAGE) { - await chrome.runtime.sendMessage(response); - } - } catch (err) { - console.error('Script or CSS injection failed:', err); - } + })(); } } } -function getTab() { +const getTab = async () => { return chrome.tabs.query({active: true, lastFocusedWindow: true}) +} + +export const injectScriptAndSendMessage = async (tabId, message) => { + try { + // 注入 JS 脚本 + await chrome.scripting.executeScript({ + target: {tabId: tabId}, + files: ['content.js'] + }); + + // 发送消息 + const response = await chrome.tabs.sendMessage(tabId, message); + + console.log("response", response); + if (response && response.action === ActionType.TO_EXTENSION_PAGE) { + await chrome.runtime.sendMessage(response); + } + } catch (err) { + console.error('Script or CSS injection failed:', err); + } } \ No newline at end of file