【问题标题】:JavaScript - Auto submit formJavaScript - 自动提交表单
【发布时间】:2016-10-07 21:50:24
【问题描述】:

我正在尝试通过 JavaScript 在一个特定网页上自动提交(登录)表单(数据由浏览器记住)。 我设法提交了我在我的电脑上制作的测试表格,使用这个很容易:

document.forms["formID"].submit();

但是当我在页面上尝试时它失败了。我通过 Greasemonkey 在页面上运行 JavaScript,它工作正常,运行警报等,但提交不起作用。 网页为:http://plusklub.hteronet.ba/Login

我尝试使用这部分代码加载 w8

document.addEventListener("DOMContentLoaded", function(event) {             
    document.forms["aspnetForm"].submit();
});

还使用此问题的顶级评论中的此代码Auto-Submit Form using JavaScript 失败意味着什么都没有发生。

我尝试了几件事:

console.log("test1");
    document.addEventListener("DOMContentLoaded", function(event) { 
        console.log("test2");           
    });
    console.log("test3");
    window.onload = function () { 
        console.log("test4");       
        }
    }
    console.log("test5");
    var fo=document.getElementById("aspnetForm");
    console.log(fo);
    var bu=document.getElementsByClassName("button");
    console.log(bu);
    bu.click();
    setTimeout(function(){ console.log("test6"); }, 3000);

输出如下:

test1helloworld.user.js:13:3
test3helloworld.user.js:17:3
test5helloworld.user.js:22:3
<form name="aspnetForm" method="post" action="/Login?ReturnUrl=http://plusklub.hteronet.ba/" id="aspnetForm">helloworld.user.js:24:3
HTMLCollection [ <input#ctl04_ctl02_btnSubmit.button> ]

【问题讨论】:

  • 您是否等待页面加载,以便在运行代码时存在表单?有什么错误吗? “失败”具体是什么意思?
  • @charlietfl,第一,你的时间。生病编辑我的问题
  • 如果你在那个事件处理程序中添加一个console.log(),它真的会被执行吗?
  • 不。但是当我在事件处理程序之前添加 console.log 时会这样做。
  • window.onload = function () { console.log("test3"); document.forms["aspnetForm"].submit(); } } 我试过了,没有变化。

标签: javascript form-submit


【解决方案1】:

很遗憾,我没有足够的评分来添加评论,所以我要试试我的镜头。

通常您需要等待页面加载才能触发这样的事件,据推测 &lt;body&gt; 元素中的 window.loadonload 事件属性应该可以工作。

我建议创建一个通过onload事件调用的函数,您可以在其中尝试检索用户详细信息(登录名和密码),如果有效,则可以在try...catch异常处理下添加您的.submit()调用以检查如果浏览器引发错误以进行进一步调试。 完成后,这可能会帮助您弄清楚您的代码发生了什么无法按预期工作。

抱歉,回答的不够准确,无法帮助您解决这个问题,但我希望能阐明您的问题。

【讨论】:

  • 谢谢帮助。只是为了通知你。不知何故,我设法提交了表格。下一个问题是提交的无限循环。因为每次提交都会触发相同的 JS 代码。我想我站在墙前,这是不可能的。 :)
  • 您可以通过 cookie 或查询字符串来处理,方法是使用带有布尔值的“autologon”等属性名称,如果为 true,您的 js 可以跳过它。我希望这会有所帮助。
  • 我无法控制我想登录的页面上的任何内容。所以我想我不能对查询字符串做任何事情!?
猜你喜欢
  • 2012-02-18
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多