mirror of
https://github.com/NaiboWang/EasySpider.git
synced 2025-04-22 23:24:22 +08:00
142 lines
4.6 KiB
JavaScript
142 lines
4.6 KiB
JavaScript
import config from './content-scripts/config.json';
|
||
import {global} from "./content-scripts/global.js";
|
||
|
||
if (config.language == 'zh') {
|
||
document.getElementById('title').innerText = '可执行操作';
|
||
document.getElementById('show-toolkit').innerText = '显示EasySpider操作台';
|
||
document.getElementById('close-toolkit').innerText = '隐藏EasySpider操作台';
|
||
} else {
|
||
document.getElementById('title').innerText = 'Executable Operations';
|
||
document.getElementById('show-toolkit').innerText = 'Show EasySpider Toolkit';
|
||
document.getElementById('close-toolkit').innerText = 'Hide EasySpider Toolkit';
|
||
}
|
||
|
||
var ws = new WebSocket("ws://localhost:8084");
|
||
ws.onopen = function () {
|
||
// Web Socket 已连接上,使用 send() 方法发送数据
|
||
console.log("已连接");
|
||
let message = {
|
||
type: 0, //消息类型,0代表连接操作
|
||
message: {
|
||
id: 3, //socket id
|
||
title: document.title, //网页标题
|
||
}
|
||
};
|
||
this.send(JSON.stringify(message));
|
||
};
|
||
|
||
document.getElementById('show-toolkit').addEventListener('click', async () => {
|
||
try {
|
||
// 发送消息给 content script
|
||
const [tab] = await chrome.tabs.query({active: true, currentWindow: true});
|
||
chrome.scripting.executeScript({
|
||
target: {tabId: tab.id},
|
||
func: showToolkit
|
||
});
|
||
let message_action = {
|
||
type: 30, //消息类型,30代表显示所有操作台
|
||
from: 3, //3代表popup
|
||
message: {}
|
||
};
|
||
window.close();
|
||
try {
|
||
ws.send(JSON.stringify(message_action));
|
||
} catch (e) {
|
||
|
||
}
|
||
} catch (error) {
|
||
console.error('Error showing toolkit:', error);
|
||
}
|
||
});
|
||
|
||
document.getElementById('close-toolkit').addEventListener('click', async () => {
|
||
try {
|
||
// 发送消息给 content script
|
||
const [tab] = await chrome.tabs.query({active: true, currentWindow: true});
|
||
chrome.scripting.executeScript({
|
||
target: {tabId: tab.id},
|
||
func: closeToolkit
|
||
});
|
||
let message_action = {
|
||
type: 31, //消息类型,30代表隐藏所有操作台
|
||
from: 3, //3代表popup
|
||
message: {}
|
||
};
|
||
window.close();
|
||
try {
|
||
ws.send(JSON.stringify(message_action));
|
||
} catch (e) {
|
||
|
||
}
|
||
} catch (error) {
|
||
console.error('Error closing toolkit:', error);
|
||
}
|
||
});
|
||
|
||
// 显示操作台函数
|
||
function showToolkit() {
|
||
const showContainers = (documentRoot) => {
|
||
const containers = documentRoot.querySelectorAll('#wrapperToolkit');
|
||
containers.forEach(container => {
|
||
if (getComputedStyle(container).display === 'none') {
|
||
container.style.display = 'block';
|
||
console.log('显示EasySpider操作台');
|
||
}
|
||
});
|
||
};
|
||
|
||
const processIframes = (documentRoot) => {
|
||
const iframes = documentRoot.querySelectorAll('iframe');
|
||
iframes.forEach(iframe => {
|
||
try {
|
||
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
||
if (iframeDoc) {
|
||
// 显示 iframe 内的 #wrapperToolkit
|
||
showContainers(iframeDoc);
|
||
processIframes(iframeDoc);
|
||
}
|
||
} catch (err) {
|
||
console.warn('无法访问 iframe:', err);
|
||
}
|
||
});
|
||
};
|
||
|
||
// 处理主文档和嵌套 iframe
|
||
showContainers(document);
|
||
processIframes(document);
|
||
}
|
||
|
||
// 关闭操作台函数
|
||
function closeToolkit() {
|
||
const hideContainers = (documentRoot) => {
|
||
const containers = documentRoot.querySelectorAll('#wrapperToolkit');
|
||
containers.forEach(container => {
|
||
if (getComputedStyle(container).display === 'block') {
|
||
container.style.display = 'none';
|
||
console.log('关闭EasySpider操作台');
|
||
}
|
||
});
|
||
};
|
||
|
||
const processIframes = (documentRoot) => {
|
||
const iframes = documentRoot.querySelectorAll('iframe');
|
||
console.log("iframes", iframes);
|
||
iframes.forEach(iframe => {
|
||
try {
|
||
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
||
if (iframeDoc) {
|
||
// 隐藏 iframe 内的 #wrapperToolkit
|
||
hideContainers(iframeDoc);
|
||
processIframes(iframeDoc);
|
||
}
|
||
} catch (err) {
|
||
console.warn('无法访问 iframe:', err);
|
||
}
|
||
});
|
||
};
|
||
|
||
// 处理主文档和嵌套 iframe
|
||
hideContainers(document);
|
||
processIframes(document);
|
||
}
|