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