【问题标题】:Trouble with greasemonkey script to refresh page使用greasemonkey脚本刷新页面的问题
【发布时间】:2013-04-24 23:45:47
【问题描述】:

我正在使用适用于 Firefox 的 imacros 插件从在线数据库下载数据。它工作得很好,除非页面超时。从那以后,我开始下载非常小的数据块,网站超时的频率大大降低了,但它仍然偶尔会超时。

问题是无法将 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 refresh greasemonkey


    【解决方案1】:

    这个问题很长,所以我没有费心去真正阅读它。由于我不使用 GreasMonkey,我可以告诉你 iMacros 解决方案。

    Check if html element exists with iMacros and javascript

    这是一个如何构建 JS iMacros 脚本并包含 if 子句的模型。您可以制作一个测试宏,测试在此处“无法打开”网页。

    你也可以试试

    SET !TIMEOUT_PAGE 120
    

    命令将页面加载时间增加到 120 秒。如果有帮助,请尝试其中一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2014-10-18
      • 2011-05-13
      • 2017-04-17
      • 1970-01-01
      相关资源
      最近更新 更多