| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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;
- };
|