Greasemonkey js转到子页面,一次又一次地等待
Greasemonkey js going to subpage, again, again and wait
很抱歉我的英语不好,可能是新问题。我想写脚本,使一些自动(在网页游戏),我所需要的一切是去子页面,然后下一个,和其他。然后脚本需要等待特定的时间并重复。我使用全局变量(布尔值)如果它为真,我将尝试这样做:
unsafeWindow.location.href = linktodo + linkequipeq + accesKey;
unsafeWindow.location.href = linktodo + linkjednoraz + accesKey;
脚本跳过第一个页面。使用setTimeout没有帮助。我使用:
// @run-at document-end
仍然不工作,我试图使用addEventListener参数'load',但没有什么(我认为我需要通过关闭窗口来"清洁"eventlistener ?-尝试在第一个函数/窗口重定向完成后使用removeEventListener,失败)。
是否可以做到这一点,而不打开和关闭新的选项卡/弹出窗口?像这样的脚本在非活动选项卡中工作吗?谁能发一些例子或者教程让我自己学习?
设置对于一些解释,这些子页面将填充一些装备,然后获得一些现金和去任务。linktodo是主机名,linkequipeq是路径名,accesKey是网页中内置的一些安全措施,在重新加载后不做某事(我通过GM使用unsafeWindow访问它)。
也许有人能理解我: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);
Greasemonkey脚本与普通脚本完全相同,除非页面加载,否则它们不会运行
在该脚本被注入加载的任何页面上,该脚本将为带有ID='autowypki'
当触发该事件时,脚本将在函数equip
linktodo + linkequipeq + accesKey
这就是这个脚本要做的所有事情
没有地方调用函数doquest
和zlomak
,所以它们只是在这个脚本
函数jednoraz
被设置为在超时5秒后调用,但到那时equip
已经加载了一个新页面,因此,jednoraz
实际上不会被调用,因为它所在的页面不再加载
equip
加载的页面中触发了相同的点击事件,那么可能 jednoraz
将被调用-然后页面linktodo + linkjednoraz + accesKey
将被加载…我说也许,因为我不是100%确定equip
将做什么功能,如果它有效地将页面设置为当前页面-即,如果导致页面加载,那么jednoraz
不会被调用,因为超时可能永远不会触发页面重新加载
相关文章:
- 一次又一次地在新的和相同的选项卡中打开一个url
- 如何初始化一次并将相同的值一次又一次地传递给另一个函数
- 流星回拨天堂回拨一次又一次
- 一次又一次地调用功能
- 如何阻止网页在到达底部后一次又一次地自动滚动
- 杜兰达尔 2.0.1,尝试激活一次又一次地被调用
- 在滚动时没有获取新数据,而是在滚动时一次又一次地添加相同的 json 数据
- 如何修复此代码以显示 10 秒并一次又一次地永远隐藏 10 秒
- 可以一次又一次地使用 ng 重复吗?
- 为什么警报框一次又一次地出现
- 如何在HTML5网页中本地保存数据,这样我们就不需要一次又一次地从服务器获取
- jQuery一次又一次地调用该函数
- 使用 JavaScript 一次又一次地在画布上编写文本
- Ajax Authorization Request标头一次又一次地失败
- 将相同的选项一次又一次地传递给jQuery函数
- 使用JQuery'加载HTML;s在一次又一次地删除HTML后多次执行getScript
- AJAX一次又一次地加载iFrame
- 即使用户一次又一次地输入同一封电子邮件,代码也不会停止提交表单
- Javascript图像选择器:防止一次又一次地选择相同的图像
- Greasemonkey js转到子页面,一次又一次地等待