簡體   English   中英

編寫腳本以打開新鏈接並單擊按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM