export const OptionScript = ( request: any, sender: any, sendResponse: (response?: any) => void ) => { // 自动发送消息的函数 const autoSendMessages = async ( messages: string[], inputSelector: string, buttonSelector: string ) => { const results = []; // 逐条发送消息 for (const message of messages) { // 点开弹窗 // 获取输入框和按钮 // 点击按钮搜索 // 获取搜索结果 // 搜索结果发送 // 结果返回 // 查找输入框和发送按钮 const inputElement = document.querySelector(inputSelector) as | HTMLInputElement | HTMLTextAreaElement | null; const sendButton = document.querySelector( buttonSelector ) as HTMLElement | null; console.log(sendButton, "sendButton", message); if (!inputElement || !sendButton) { throw new Error("找不到输入框或发送按钮"); } try { // 设置输入框的值 inputElement.value = message; // 触发输入事件(有些网站需要) const inputEvent = new Event("input", { bubbles: true }); inputElement.dispatchEvent(inputEvent); // 触发change事件(有些网站需要) const changeEvent = new Event("change", { bubbles: true }); inputElement.dispatchEvent(changeEvent); // 点击发送按钮 sendButton.click(); // 记录发送的消息 results.push({ message, status: "sent", timestamp: Date.now() }); // 没有按顺序发送,输入框需存在值后按钮才会启用,设置disabled无效 // 结束标识 // 等待一段时间再发送下一条消息(可根据需要调整) await new Promise((resolve) => setTimeout(resolve, 10000)); } catch (error) { results.push({ message, status: "error", error: error instanceof Error ? error.message : "未知错误", timestamp: Date.now(), }); } } return results; }; console.log("OptionScript"); autoSendMessages( request.messages || Array.from({ length: 10 }, (_, i) => (i + 1).toString()), request.inputSelector, request.buttonSelector ) .then((results) => { sendResponse({ success: true, results }); }) .catch((error) => { sendResponse({ success: false, error: error.message }); }); // 异步响应,需要返回 true return true; };