Spaces:
Runtime error
Runtime error
// 传入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(); |