Javascript Greasemonkey js将进入子页面,再次,再次等待

Javascript Greasemonkey js将进入子页面,再次,再次等待,javascript,location,href,Javascript,Location,Href,对不起,我的英语不好,可能是个新问题。 我想写脚本,使一些东西自动(在网络游戏中),我需要的一切是去子页面,然后下一个,和其他。然后脚本需要等待特定的时间并重复。 我正在使用全局变量(布尔值),如果它为真,我将尝试这样做: unsafeWindow.location.href = linktodo + linkequipeq + accesKey; unsafeWindow.location.href = linktodo + linkjednoraz + accesKey; 脚本跳过第一个进

对不起,我的英语不好,可能是个新问题。 我想写脚本,使一些东西自动(在网络游戏中),我需要的一切是去子页面,然后下一个,和其他。然后脚本需要等待特定的时间并重复。 我正在使用全局变量(布尔值),如果它为真,我将尝试这样做:

unsafeWindow.location.href = linktodo + linkequipeq + accesKey;
unsafeWindow.location.href = linktodo + linkjednoraz + accesKey;
脚本跳过第一个进入页面的步骤。使用setTimeout没有帮助。我正在使用:

// @run-at document-end
仍然无法工作,我尝试使用带参数'load'的addEventListener,但什么也没有(我想我需要通过关闭窗口来“清理”eventlistener?-在完成第一个函数/窗口重定向后尝试使用removeEventListener,失败)

是否可以在不打开和关闭新选项卡/弹出窗口的情况下执行此操作? 像这样的脚本在非活动选项卡中工作吗? 有人可以发布一些这样做的例子或教程我将独自学习吗

附言 对于一些解释,这些子页面将填充一些设备,然后得到一些现金和去追求。 linktodo是主机名,linkequipeq是路径名,accesKey是建立在网页中的某种安全机制,用于在重新加载后不执行任何操作(我使用unsafeWindow通过GM获得对它的访问)

也许有人能理解我:D

// @include     "site"
// @grant       GM_addStyle
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_deleteValue
// @grant       GM_listValues
// @grant       GM_xmlhttpRequest 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @run-at document-end
var wypki = 0;
var cash = 0;
var czas = 0;
var autowypki = false;

var linkwypki = '?a=q';
var linksklep = '?a=town=';
var linkequipeq = '?a=equip';
var linkjednoraz = '?a=buyone';
var linkrealm;
var accesKey = unsafeWindow.accessKey;
var numbercash = document.getElementsByClassName('cash')[0].getElementsByClassName('panel');
var mynumbercash = numbercash[0];
var cash1 = (mynumbercash.innerHTML);
cash = cash1.slice(28, cash1.indexOf('PLN'));
cash = parseInt(cash.replace(/\s+/g, ''));

var linktodo = link.slice(0, link.indexOf('?a='));

function doquest() {
    'use strict';
    unsafeWindow.location.href = linktodo + linkwypki;
    setTimeout(function () {
        unsafeWindow.getElementById('start')[0].click();
    }, 2000);

}
function zlomek() {
    'use strict';

    if (cash < 20000) {
        unsafeWindow.location.href = linktodo + linksklep + accesKey;
    }
}
function jednoraz() {
    'use strict';
    if (autowypki === true && cash > 20000) {
        unsafeWindow.location.href = linktodo + linkjednoraz + accesKey;
    }
}
function equip() {
    'use strict';
    unsafeWindow.location.href = linktodo + linkequipeq + accesKey;
}
/* --- Main ----*/
function autoQuest() {
    'use strict';
    autowypki = true;
    equip();
    setTimeout(jednoraz(),5000);
}
/* --- Main ----*/

if (a === linkwypki) {
    var przyciskwypki = document.getElementsByTagName("form")[0].getElementsByTagName('div')[13];
    przyciskwypki.innerHTML =  przyciskwypki.innerHTML + '<input class="button" type="button" style="height: 20px; width: 110px;" id="autowypki"  value=" Robimy wypki"  />';
}
document.getElementById("autowypki").addEventListener("click", autoQuest, false);
/@包括“站点”
//@grant GM_addStyle
//@grant GM_getValue
//@grant GM_setValue
//@grant GM_deleteValue
//@grant GM_listValues
//@grant GM_xmlhttpRequest
//@需要http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
//@需要https://gist.github.com/raw/2625891/waitForKeyElements.js
//@在文档末尾运行
var-wypki=0;
var现金=0;
var-czas=0;
var autowypki=false;
var linkwypki='?a=q';
var linksklep='?a=城镇=';
变量linkequipeq='?a=装备';
var linkjednoraz='?a=买方';
var-linkrealm;
var accesKey=unsafeWindow.accessKey;
var numbercash=document.getElementsByClassName('cash')[0].getElementsByClassName('panel');
var mynumbercash=numbercash[0];
var cash1=(mynumbercash.innerHTML);
现金=现金1.slice(28,现金1.indexOf(“PLN”);
cash=parseInt(cash.replace(/\s+/g',);
var linktodo=link.slice(0,link.indexOf('?a=');
函数doquest(){
"严格使用",;
unsafeWindow.location.href=linktodo+linkwypki;
setTimeout(函数(){
unsafeWindow.getElementById('start')[0]。单击();
}, 2000);
}
函数zlomek(){
"严格使用",;
如果(现金<20000){
unsafeWindow.location.href=linktodo+linksklep+accesKey;
}
}
函数jednoraz(){
"严格使用",;
如果(autowypki===true&&cash>20000){
unsafeWindow.location.href=linktodo+linkjednoraz+accesKey;
}
}
功能装备(){
"严格使用",;
unsafeWindow.location.href=linktodo+linkequipeq+accesKey;
}
/*---梅因----*/
函数autoQuest(){
"严格使用",;
autowypki=true;
装备();
setTimeout(jednoraz(),5000);
}
/*---梅因----*/
if(a==linkwypki){
var przyciskwypki=document.getElementsByTagName(“表单”)[0].getElementsByTagName(“div”)[13];
przyciskwypki.innerHTML=przyciskwypki.innerHTML+“”;
}
document.getElementById(“autowypki”).addEventListener(“单击”,autoQuest,false);

Greasemonkey脚本与普通脚本完全相同,除非加载页面,否则它们不会运行

在注入并加载此脚本的任何页面上,此脚本都将使用
ID='autowypki'

触发该事件时,脚本将在函数
equipment

这就是这个剧本要做的一切

没有任何地方可以调用函数
doquest
zlomak
,因此它们只是在这个脚本中搭便车

函数
jednoraz
设置为在超时5秒后调用,但此时
equipment
已加载一个新页面,因此,
jednoraz
实际上不会被调用,因为它所在的页面已不再加载


但是,如果在
equipm
加载的页面中触发了相同的单击事件,则可能会调用
jednoraz
,然后将加载页面
linktodo+linkjednoraz+accesKey
。。。我说可能,因为我不能100%确定如果
equipm
有效地将页面设置为当前页面,它会做什么-即,如果这会导致页面加载,那么将不会调用
jednoraz
,因为超时可能永远不会触发,因为页面已重新加载Greasemonkey脚本与正常脚本完全相同,除非加载页面,否则它们不会运行

在注入并加载此脚本的任何页面上,此脚本都将使用
ID='autowypki'

触发该事件时,脚本将在函数
equipment

这就是这个剧本要做的一切

没有任何地方可以调用函数
doquest
zlomak
,因此它们只是在这个脚本中搭便车

函数
jednoraz
设置为在超时5秒后调用,但此时
equipment
已加载一个新页面,因此,
jednoraz
实际上不会被调用,因为它所在的页面已不再加载


但是,如果在
equipm
加载的页面中触发了相同的单击事件,则可能会调用
jednoraz
,然后将加载页面
linktodo+linkjednoraz+accesKey
。。。我说可能,因为我不能100%确定
equipm
功能在有效地将页面设置为当前页面时会起什么作用-即,如果这导致页面加载,则不会调用
jednoraz
,因为当页面重新加载时,超时可能永远不会触发

您需要显示更多的代码,但当你发布它时,毫不奇怪你会得到t