明确一点:我不打算进行自动更新。我只是想让用户知道有一个更新的脚本,并给他们一个链接,他们可以去那里获取最新版本。
在 Firefox 中有几种方法可以做到这一点,但它们似乎都使用了 Chrome 不支持的 Greasemonkey 特定功能。
我今天花了 4 个小时来研究这个问题,现在我正在向 SO 社区寻求帮助。
明确一点:我不打算进行自动更新。我只是想让用户知道有一个更新的脚本,并给他们一个链接,他们可以去那里获取最新版本。
在 Firefox 中有几种方法可以做到这一点,但它们似乎都使用了 Chrome 不支持的 Greasemonkey 特定功能。
我今天花了 4 个小时来研究这个问题,现在我正在向 SO 社区寻求帮助。
感谢 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); }); }); });
我刚刚找到了一个在 chrome 上运行的greasefire 更新脚本。不知道会不会有帮助。 http://code.google.com/p/greasefire/source/browse/chrome/updater.js?r=55