[英]Write a script to open new link and click a button
我寫了一個小的greasemonkey腳本來打開這種類型的鏈接http://example.com/details.php?id=*&very=1
並點擊這些鏈接上的hello
按鈕,但不知何故它無法工作
// ==UserScript==
// @name My Fancy New Userscript
// @namespace http://use.i.E.your.homepage/
// @version 0.1
// @description enter something useful
// @include http://example.com/details.php?id=*&very=1
// @copyright 2012+, You
// ==/UserScript==
function sayhello(){
for(var i=1;i<100;i++){
window.location.href='http://example.com/details.php?id='+i+'&very=1'
$("#hello").click()}
}
};
sayhello();
但它並不像我的預期那樣工作。 並且由於新的 href 符合include
規則,因此它將始終加載和加載...
我將其改寫為:
function sayhello(){
var i=window.location.href.match(/\d+/)
j=Number(i)+1
window.location.href=window.location.href.replace(/\d+/, j);
$("#hello").click()
};
sayhello();
它運行緩慢,因為每次它都會加載整個新頁面,有時如果頁面中的某些內容無法正確加載,它只會停留在該頁面上等待和加載然后崩潰。
如何跳過無法正確加載的頁面並保證腳本運行?
以及如何加快速度,我只需要點擊一個特定的按鈕,不需要加載圖片或其他東西。
任何人都可以幫忙嗎?
謝謝。
與在網頁上運行的其他 JavaScript 一樣,Greasemonkey 腳本不會在頁面加載時保留狀態。 其結果,
for(var i = 1; i < 100; i++) {
window.location.href = 'http://example.com/details.php?id=' + i + '&very=1';
$("#hello").click();
}
將嘗試加載http://example.com/details.php?id=1&very=1
。 在這樣做時,它卸載自身並丟棄其狀態。 它沒有到達$("#hello").click();
.
與其如此程序化地看待它,不如這樣想:你在一個網頁上。 您想單擊該按鈕,然后轉到下一個網頁。 考慮到這一點,你可以這樣寫:
$("#hello").click();
var currentID = /* retrieve current ID from URL */;
var nextID = currentID + 1;
if(nextID < 100) {
window.location.href = 'http://example.com/details.php?id='
+ nextID + '&very=1';
}
根據$("#hello").click()
作用,您可能會或可能不會給它足夠的時間來完成它應該做的事情。 您可以通過在繼續下一頁之前添加setTimeout
來解決這個問題,或者嘗試找到某種回調來掛鈎。
最后,如果您希望它加快速度,而不是加載圖像或任何東西,那么解決方案是不使用瀏覽器。 讓它運行得最快的方法是弄清楚點擊#hello
做了什么,然后在瀏覽器之外編寫一個腳本來模仿那個動作。 運氣好的話,你不需要加載圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.