使用Tampermonkey通过javascript自动填写表单时未发送表单
我正在使用以下代码尝试自动填充我在我工作的公司的每日工作时间使用Tampermonkey通过javascript自动填写表单时未发送表单,javascript,tampermonkey,Javascript,Tampermonkey,我正在使用以下代码尝试自动填充我在我工作的公司的每日工作时间 (函数(){ "严格使用",; //调试器; 变量日期=document.querySelector(“#filter_day”).值 var alreadyRun=GM_getValue(日期,false); 如果(!alreadyRun){ GM_设定值(日期,真); document.querySelector(“#fstjid_1”)。selectedIndex=5; document.querySelector(“#time
(函数(){
"严格使用",;
//调试器;
变量日期=document.querySelector(“#filter_day”).值
var alreadyRun=GM_getValue(日期,false);
如果(!alreadyRun){
GM_设定值(日期,真);
document.querySelector(“#fstjid_1”)。selectedIndex=5;
document.querySelector(“#time_start_MM_1”).setAttribute('value','00”);
document.querySelector(“#time_start_HH_1”).setAttribute('value','10”);
document.querySelector(“#time_end_MM_1”).setAttribute('value','00”);
document.querySelector(“#time_end_HH_1”).setAttribute('value','19”);
document.getElementById(“save_btn”)。单击();
}
})();
但是,由于某些原因,当使用脚本设置小时字段并单击保存按钮(无论脚本是否手动保存)时,表单不会发送,页面只会刷新,值也会清除
手动设置小时字段和脚本设置时,似乎有些不同,但我无法解释原因
我尝试使用setAttribute
以及简单的.value=
。我尝试使用双括号“
和单括号”
。似乎没有任何效果,分析HTML就我所知,这些字段没有什么特别之处
该表的HTML:
:
:
保存按钮ΗΜL:
有一件事可能会阻止您的代码工作 在每个
输入上
都有onchange=“flag\u触摸(此);“
这可能会导致网页在某些内部JavaScript状态下存储当前值。这意味着您必须手动在输入上调度change
事件,以模拟用户输入
尝试使用这样的函数来有效地更改输入值:
function changeInputValue(element, value) {
if (element instanceof HTMLInputElement) {
element.value = value;
}
else if (element instanceof HTMLSelectElement) {
element.selectedIndex = value;
}
element.dispatchEvent(new Event('change', { bubbles: true }));
}
submit按钮在click
事件上有一些JavaScript,但它不是type=“submit”
,因此它的行为不像本机的submit按钮,然后是document.getElementById(“save_btn”)。click();
行应该足以模拟用户与此按钮的交互
如果这不起作用,您应该在输入和提交按钮上检查潜在的“JavaScript注册”事件侦听器(使用addEventListener
),并将它们添加到问题中