// 传入input标签的选择器与要写入的内容,写入内容通过input的change事件写入 function writeInput(selector, content) { const inputElement = document.querySelector(selector); const textToInput = content; // 删除输入框原本的值 inputElement.value = ''; // 模拟逐个字符输入 for (let i = 0; i < textToInput.length; i++) { const char = textToInput[i]; const keyCode = char.charCodeAt(0); // 触发 keydown 事件 const keydownEvent = new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode }); inputElement.dispatchEvent(keydownEvent); // 触发 keypress 事件 const keypressEvent = new KeyboardEvent('keypress', { bubbles: true, cancelable: true, key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode }); inputElement.dispatchEvent(keypressEvent); // 更新输入框的值 inputElement.value += char; // 触发 input 事件 const inputEvent = new Event('input', { bubbles: true }); inputElement.dispatchEvent(inputEvent); // 触发 keyup 事件 const keyupEvent = new KeyboardEvent('keyup', { bubbles: true, cancelable: true, key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode }); inputElement.dispatchEvent(keyupEvent); } } // 反复查找元素,直到找到为止,触发回调函数 function findElement(selector, callback) { const intervalid = setInterval(() => { const element = document.querySelector(selector); if (element) { clearInterval(intervalid); console.log("find element"); callback(element); // 在接下来的1秒内,每隔100毫触发一次回调函数 const intervalid2 = setInterval(() => { callback(element); }, 100); // 1秒后停止触发回调函数 setTimeout(() => { clearInterval(intervalid2); console.log("click"); document.querySelector("#query_button").click(); }, 2000); } }, 100); } // 获取当前页面的URL的参数date,如果没有则查看父页面的URL的参数date function getDate() { let date = new URLSearchParams(window.location.search).get('date'); if (!date) { date = new URLSearchParams(window.parent.location.search).get('date'); } console.log(date); if (date) { // 解析日期并转为YYYY-MM-DD格式 // 将日期按照非数字字符分割,然后取出前三个数字,转为字符串,不足两位的前面补0 const dataArr = date.match(/\d+/g); if (dataArr.length >= 6) { let start_date = dataArr.slice(0, 3).map(num => num.padStart(2, '0')); let end_date = dataArr.slice(3, 6).map(num => num.padStart(2, '0')); start_date[0] = start_date[0].padStart(4, '2025'); end_date[0] = end_date[0].padStart(4, '2025'); findElement("#start_date textarea", () => { writeInput("#start_date textarea", start_date.join('-')); writeInput("#end_date textarea", end_date.join('-')); }); } else { date = dataArr.map(num => num.padStart(2, '0')); date[0] = date[0].padStart(4, '2025'); date = date.join('-'); findElement("#start_date textarea", () => { writeInput("#start_date textarea", date); writeInput("#end_date textarea", date); }); } } } getDate();