0

我有两页,每页一张表格。当您提交第一个表单时,您将使用第二个表单移动到第二页。
如何在一个 Greasemonkey 脚本中提交两种表格。

一步步:

  1. 打开 Page_1
  2. 点击提交按钮
  3. 提交操作将我们移至 Page_2
  4. Click submit_button_2

Note that both pages have the same URL, but Page_1 shows on 'GET', Page_2 on 'POST'. (Editor's note: They may be AJAX-powered forms or submit-to-same-page forms.)

4

3 回答 3

2

将两个 url 添加到 @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();
}
于 2012-09-06T19:18:29.953 回答
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);
}
于 2012-09-06T21:58:42.130 回答
0

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

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

于 2012-09-06T15:44:14.260 回答