繁体   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