我正在使用Firefox的imacros插件从在线数据库下载数据。它完美的工作,除非页面超时。我已经开始下载非常小的数据块,因为那时网站的使用时间要少得多,但偶尔也会超时。刷新greasemonkey脚本的问题页面
问题是没有办法编码if语句直接进入imacros宏,所以我想要一个沿着它运行的刷新页面的greasemonkey脚本,如果它超时。该网站只是超时在一个地方对我来说,当它做它显示以下内容: 无法打开文件
我从来没有学过的Java或Javascript和所有与数值计算方法我的编程经验的交易,但我我一直在拼凑代码并使其适应于尝试解决我的问题。
以下是我的基本代码:
var RefreshTime = '20';
var str1 = document.body.innerHTML
var str2 = "can't open file"
if (str1.search(str2) > 0) {
if (StRefTime > 0) setTimeout("location.reload(true);",RefreshTime*1000);
}
由于我这运行在浏览器中,目前正在专门用于这个脚本我只是还@include *
基本上这是什么意思要做的就是每20秒钟刷新一次页面,只要“无法打开文件”就会找到该网页。当我测试时,这在其他网站上完美运行,但在我需要的网站上根本无法运行。值得注意的是,当我刷新时,Firefox会要求我确认重新发送发布数据 - 但imacros确实有一个功能,我测试并在本站上运行,以便在显示对话框时自动确认。
在做了一些阅读之后,我发现其他人有类似的问题,我认为其根源是如果页面是通过AJAX到达的话,那么greasemonkey会错过它。
为了解决这个问题,我尝试对这些人实施建议的解决方案,但是我一直没有成功。例如,我已经试过把我上面列出到这里给出的解决方案的代码:Run Greasemonkey script on the same page, multiple times?,例如
var RefreshTime = '20';
var str1 = document.body.innerHTML
var str2 = "can't open file"
function highlightGoodComments (jNode) {
//***** YOUR CODE HERE *****
if (/str2/i.test (jNode.text())) {
if (str1.search(str2) > 0) {
if (RefreshTime > 0) setTimeout("location.reload(true);",RefreshTime*1000);
}
}
但这也不管用,我尝试了它的一对夫妇的变化(例如摆脱str2,只是把“打开文件”和类似的东西),我也试过,并没有做出以下工作https://gist.github.com/BrockA/2625891。我也尝试将所有的初始代码包装在一个setInterval循环中,希望即使没有任何页面加载,它也会经常检查“无法打开文件”,但这也不起作用。
不幸的是,我运行我的脚本的网站隐藏在付费墙后面,并且很难测试我的代码,因为它随机超时,因此无法检查我的代码是否在等待很长时间并看看它是否失败。我对AJAX一无所知,所以我不知道如何确认这是发生了什么,但我仍然相信它是如此,因为我的问题似乎与其他人的问题类似 - 当我启用此宏时,它确实似乎干扰网站的其他部分,但不是我的脚本工作的部分。
我希望有人可以帮助我,因为我在这里很困难,已经在我的头上。即使你无法提供帮助,如果有人知道某个AJAX网站,我可以在不需要等待几个小时的情况下测试代码的某种类型的AJAX网站,这对我尝试自己弄清楚这一点很有帮助。感谢您阅读本文,我真的很感谢任何人可以提供的帮助。