如何让我的脚本连续提交两个表单?

时间:2012-09-06 15:37:39

标签: javascript ajax greasemonkey

我有两个页面,每个页面都有一个表格。当您提交第一个表格时,您将转到第二个表格的第二页 如何在一个Greasemonkey脚本中提交两个表单。

一步一步:

  1. 打开Page_1
  2. 点击submit_button
  3. 提交操作将我们移至Page_2
  4. 点击submit_button_2
  5. 请注意,这两个网页都有相同的网址,但是Page_1显示在' GET',Page_2 on' POST'。 (编者注:它们可能是基于AJAX的表单或提交到同一页面的表单。)

3 个答案:

答案 0 :(得分:2)

将两个网址添加到@include列表并遵循此伪代码:

if (isUrl1) {
    submitFormAtUrl1;
} else {
    submitFormAtUrl2;
}

示例:

// @include http://domain/page1.php
// @include http://domain/page2.php

...

if ("/page1.php" == location.pathname) {
    form1.submit();
} else {
    form2.submit();
}

答案 1 :(得分:1)

如果总是想要点击这些表单,请使用如下脚本。这种方法也适用于AJAXified表单/页面,如你的:

// ==UserScript==
// @name     _Submit either of 2 forms
// @include  {{{Page_1}}}
// @include  {{{Page_2}}}
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a major design change
    introduced in GM 1.0.
    It restores the sandbox.
*/

waitForKeyElements ("SUBMIT_BUTTON_1 CSS SELECTOR", clickOnSubmitButton);
waitForKeyElements ("SUBMIT_BUTTON_2 CSS SELECTOR", clickOnSubmitButton);

function clickOnSubmitButton (jNode) {
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    jNode[0].dispatchEvent (clickEvent);
}

答案 2 :(得分:0)

一些示例代码会有所帮助,但一次提交两个表单的最简单方法是将它们组合成一个页面。如果你想要在视觉上分解这两个表单,你可以使用jQuery隐藏表单的第二部分,直到用户点击一个按钮,然后隐藏第一部分并显示第二部分。

另一种选择是提交第一个表单,然后在第二页上将其所有响应添加到服务器端的隐藏表单元素。

相关问题