2012-09-06 74 views
0

我有兩個頁面,每個頁面都有一個窗體。當您提交第一個表格時,您將轉到第二個表格。
如何在一個Greasemonkey腳本中提交這兩個表單。如何讓腳本提交兩個連續的表單?

循序漸進:

  1. 打開PAGE_1
  2. 點擊submit_button
  3. 提交的行動感動得我們Page_2
  4. 點擊submit_button_2

注意兩個頁面具有相同的URL,但Page_1會在'POST'上顯示'GET',Page_2。 (編者注:它們可能是AJAX驅動的表單或提交到相同頁面的表單。)

+0

添加: 我沒有訪問服務器頁面。所有頁面都是* .php – OdNairy

+0

你是什麼意思的「在一個JS腳本」?只需在兩個頁面中包含外部文件。 – Bergi

+0

我有我想要改變的greasemonkey腳本。它適用於每一頁。 – OdNairy

回答

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(); 
} 
+0

頁面具有相同的URl,但Page_1在'POST'上顯示'GET',Page_2 – OdNairy

0

一些示例代碼會有所幫助,但一次提交兩種表單最簡單的方法是將它們合併爲一個頁面。如果您希望將這兩種表單直觀地分解,您可以使用jQuery將表單的第二部分隱藏起來,直到用戶單擊按鈕,然後隱藏第一部分並顯示第二部分。

另一種選擇是提交第一個表單,然後將其所有響應添加到服務器端的隱藏表單元素的第二頁上。

+0

「另一種選擇是提交第一個表單,然後將其所有響應添加到第二頁上的隱藏表單元素服務器端。」 - 這是我的建議。 –

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); 
}