mirror of
https://github.com/yaklang/yaklang-chrome-extension.git
synced 2026-09-27 05:31:53 +08:00
fix inject
This commit is contained in:
+2
-28
@@ -1,4 +1,4 @@
|
|||||||
import {ActionType, WebSocketManager} from './socket.js';
|
import {ActionType, injectScriptAndSendMessage, WebSocketManager} from './socket.js';
|
||||||
|
|
||||||
|
|
||||||
console.info("Chrome Extenstion Background is loaded")
|
console.info("Chrome Extenstion Background is loaded")
|
||||||
@@ -56,38 +56,12 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
|
|||||||
break;
|
break;
|
||||||
case ActionType.INJECT_SCRIPT:
|
case ActionType.INJECT_SCRIPT:
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
await injectScriptAndSendMessage(msg.tabId, {
|
||||||
// 注入 JS 脚本
|
|
||||||
await chrome.scripting.executeScript({
|
|
||||||
target: {tabId: msg.tabId},
|
|
||||||
files: ['content.js']
|
|
||||||
});
|
|
||||||
|
|
||||||
// 发送消息
|
|
||||||
const response = await chrome.tabs.sendMessage(msg.tabId, {
|
|
||||||
type: ActionType.INJECT_SCRIPT,
|
type: ActionType.INJECT_SCRIPT,
|
||||||
value: msg.value
|
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);
|
|
||||||
}
|
|
||||||
})();
|
})();
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const pageFunction = (code) => {
|
|
||||||
chrome.runtime.sendMessage({code}, response => {
|
|
||||||
if (response && response.success) {
|
|
||||||
console.log('Result:', response.result);
|
|
||||||
} else {
|
|
||||||
console.error('Error:', response.error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
+21
-28
@@ -92,37 +92,36 @@ export class WebSocketManager {
|
|||||||
return this.socket && this.socket.readyState === WebSocket.OPEN;
|
return this.socket && this.socket.readyState === WebSocket.OPEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleMessage(message) {
|
handleMessage(message) {
|
||||||
console.log("message", message)
|
|
||||||
message = JSON.parse(message);
|
message = JSON.parse(message);
|
||||||
if (message && message.type === "eval") {
|
if (message && message.type === "eval") {
|
||||||
console.log("msg ", message)
|
(async () => {
|
||||||
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 {
|
|
||||||
const [tab] = await getTab();
|
const [tab] = await getTab();
|
||||||
|
await injectScriptAndSendMessage(tab.id, {
|
||||||
|
type: ActionType.INJECT_SCRIPT,
|
||||||
|
value: {
|
||||||
|
mode: "CONTENT_EVAL_CODE", code: message.code,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getTab = async () => {
|
||||||
|
return chrome.tabs.query({active: true, lastFocusedWindow: true})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const injectScriptAndSendMessage = async (tabId, message) => {
|
||||||
|
try {
|
||||||
// 注入 JS 脚本
|
// 注入 JS 脚本
|
||||||
await chrome.scripting.executeScript({
|
await chrome.scripting.executeScript({
|
||||||
target: {tabId: tab.id},
|
target: {tabId: tabId},
|
||||||
files: ['content.js']
|
files: ['content.js']
|
||||||
});
|
});
|
||||||
|
|
||||||
// 发送消息
|
// 发送消息
|
||||||
const response = await chrome.tabs.sendMessage(tab.id, {
|
const response = await chrome.tabs.sendMessage(tabId, message);
|
||||||
type: ActionType.INJECT_SCRIPT,
|
|
||||||
value: {
|
|
||||||
mode: "CONTENT_EVAL_CODE", code: code,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log("response", response);
|
console.log("response", response);
|
||||||
if (response && response.action === ActionType.TO_EXTENSION_PAGE) {
|
if (response && response.action === ActionType.TO_EXTENSION_PAGE) {
|
||||||
@@ -132,9 +131,3 @@ export class WebSocketManager {
|
|||||||
console.error('Script or CSS injection failed:', err);
|
console.error('Script or CSS injection failed:', err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTab() {
|
|
||||||
return chrome.tabs.query({active: true, lastFocusedWindow: true})
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user