3

明确一点:我不打算进行自动更新。我只是想让用户知道有一个更新的脚本,并给他们一个链接,他们可以去那里获取最新版本。

在 Firefox 中有几种方法可以做到这一点,但它们似乎都使用了 Chrome 不支持的 Greasemonkey 特定功能。

我今天花了 4 个小时来研究这个问题,现在我正在向 SO 社区寻求帮助。

4

2 回答 2

3

感谢 Yijiang 在评论中发布此链接。以防该脚本消失,我将在此处发布内容:

// ==用户脚本==
// @name SelfUpdatingScript
// @版本 1.0.0
// @namespace Benjol (http://stackoverflow.com/users/11410/benjol)
// @description 用于自更新脚本的模板脚本
// @credits 感谢 http://stackoverflow.com/users/115866/balpha
// @include https://gist.github.com/*
// ==/用户脚本==

函数 with_jquery(f) {
  var script = document.createElement("script");
  script.type = "文本/javascript";
  script.textContent = "(" + f.toString() + ")(jQuery)";
  document.body.appendChild(脚本);
};

with_jquery(函数($){
  $(函数(){
    //这是如何运作的?
    // 1. 安装的脚本先加载,并将本地的VERSION变量设置为当前安装的版本号
    // 2. window["selfUpdaterCallback:" + URL] 没有定义,所以跳过
    // 3. 调用updateCheck()时,定义window["selfUpdaterCallback:" + URL],在VERSION(闭包)中保留安装的版本号
    // 4. updateCheck() 然后将外部版本的脚本加载到页眉中
    // 5. 当脚本的外部版本加载时,它使用外部(可能是新的)版本号定义自己的本地 VERSION
    // 6. window["selfUpdaterCallback:" + URL] 现在定义好了,所以调用它,传入外部版本号
    // 7.如果外部版本号(ver)大于安装版本(VERSION),则调用通知
    变种版本 = 1.0; // 比 1.13; 如果你的意思是 1.02,就这么说吧!)
    var URL = "https://gist.github.com/raw/874058/selfupdatingscript.user.js"; // 版本)
          通知程序(版本,版本,URL);
      }

      // 使它成为一个脚本标签。所以不允许我在前面有一个更大的标志。
      /*$(' script />').attr("src", URL).appendTo("head");*/
    }

    // 在此评论之后插入您的自定义脚本
    //通过以下方式自定义此代码
    // - 修改回调以显示您自己的自定义通知
    // - 您可以决定检查更新的频率低于每次页面加载时的频率
    updateCheck(function (newver, oldver, url) {
      alert("SelfUpdatingScript 的新版本(" + newver + ",您的当前版本是" + oldver + ")可在此处下载:" + url);
    });
  });
});
于 2011-04-18T02:53:49.917 回答
2

我刚刚找到了一个在 chrome 上运行的greasefire 更新脚本。不知道会不会有帮助。 http://code.google.com/p/greasefire/source/browse/chrome/updater.js?r=55

于 2011-04-10T02:08:33.390 回答