0

それぞれ1つのフォームを持つ2つのページがあります。最初のフォームを送信すると、2番目のフォームのある2ページ目に移動します。
1つのGreasemonkeyスクリプトで両方のフォームを送信するにはどうすればよいですか。

ステップバイステップ:

  1. Page_1を開く
  2. submit_buttonをクリックします
  3. 送信アクションにより、Page_2に移動しました
  4. submit_button_2をクリックします

両方のページのURLは同じですが、Page_1は「GET」に表示され、Page_2は「POST」に表示されることに注意してください。(編集者注:AJAXを利用したフォームまたは同じページに送信するフォームの場合があります。)

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

これらのフォームを常にクリックする場合は、次のようなスクリプトを使用してください。このアプローチは、次のようなAJAX化されたフォーム/ページでも機能します。

// ==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

いくつかのサンプルコードが役立ちますが、両方のフォームを一度に送信する最も簡単な方法は、それらを1つのページに結合することです。2つのフォームを視覚的に分割したい場合は、jQueryを使用して、ユーザーがボタンをクリックするまでフォームの2番目のセクションを非表示にしてから、最初のセクションを非表示にして2番目のセクションを表示できます。

もう1つのオプションは、最初のフォームを送信してから、そのすべての応答を2番目のページのサーバー側の非表示のフォーム要素に追加することです。

于 2012-09-06T15:44:14.260 に答える