我有兩個頁面,每個頁面都有一個窗體。當您提交第一個表格時,您將轉到第二個表格。
如何在一個Greasemonkey腳本中提交這兩個表單。如何讓腳本提交兩個連續的表單?
循序漸進:
- 打開PAGE_1
- 點擊submit_button
- 提交的行動感動得我們Page_2
- 點擊submit_button_2
注意兩個頁面具有相同的URL,但Page_1會在'POST'上顯示'GET',Page_2。 (編者注:它們可能是AJAX驅動的表單或提交到相同頁面的表單。)
我有兩個頁面,每個頁面都有一個窗體。當您提交第一個表格時,您將轉到第二個表格。
如何在一個Greasemonkey腳本中提交這兩個表單。如何讓腳本提交兩個連續的表單?
循序漸進:
注意兩個頁面具有相同的URL,但Page_1會在'POST'上顯示'GET',Page_2。 (編者注:它們可能是AJAX驅動的表單或提交到相同頁面的表單。)
添加兩個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();
}
頁面具有相同的URl,但Page_1在'POST'上顯示'GET',Page_2 – OdNairy
一些示例代碼會有所幫助,但一次提交兩種表單最簡單的方法是將它們合併爲一個頁面。如果您希望將這兩種表單直觀地分解,您可以使用jQuery將表單的第二部分隱藏起來,直到用戶單擊按鈕,然後隱藏第一部分並顯示第二部分。
另一種選擇是提交第一個表單,然後將其所有響應添加到服務器端的隱藏表單元素的第二頁上。
「另一種選擇是提交第一個表單,然後將其所有響應添加到第二頁上的隱藏表單元素服務器端。」 - 這是我的建議。 –
如果總是希望這些形式的點擊,使用腳本類似下面的。此方法也適用於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);
}
添加: 我沒有訪問服務器頁面。所有頁面都是* .php – OdNairy
你是什麼意思的「在一個JS腳本」?只需在兩個頁面中包含外部文件。 – Bergi
我有我想要改變的greasemonkey腳本。它適用於每一頁。 – OdNairy