tomchen1989
小狐狸
小狐狸
  • UID28132
  • 注册日期2009-03-01
  • 最后登录2013-08-19
  • 发帖数12
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
阅读:4382回复:1

Greasemonkey和Scriptish使用脚本自动检查更新的方法与问题详解

楼主#
更多 发布于:2012-03-30 19:46
用户脚本(UserScript)检查更新的功能已被Firefox扩展Greasemonkey v0.9.18或以上版本和Scriptish支持,具体细节如下:


Greasemonkey
(2012年2月28日发布的v0.9.18或以上版本)

如果要指定URL,那么@updateURL和@downloadURL必须同时都填上。

@updateURL指检查最新版本时用的URL。一般用.meta.js(保存元数据的文件,userscripts.org会自动生成.user.js脚本对应的.meta.js,例如:https://userscripts.org/scripts/source/116879.meta.js)的URL即可,.meta.js只有脚本的基本元数据,一般来说检查.meta.js比载入完整的脚本.user.js快得多且节省带宽,但如果填.user.js也能用,就是慢点而已。

@downloadURL指下载最新脚本时用的URL。这个就一定要填.user.js了。

如果没有指定@updateURL和@downloadURL,那么,用户安装脚本时使用的脚本的URL将作为检查和下载脚本的URL。在使用v0.9.18之前版本的Greasemonkey时安装了脚本,后将Greasemonkey更新到v0.9.18+,那么这些脚本的安装URL可能无法获取,必须重新安装脚本。

@updateURL与@downloadURL填写了,但是却没有填写正确的,或只填写了其中之一的脚本无法检查更新,即便重新安装。用户请自行修改或联系作者修改。要不就不填@updateURL与@downloadURL,使用脚本安装的URL来进行更新。

默认启用通过https安全连接更新的选项。在该选项启用时,如果@updateURL与@downloadURL指定的,或者(当未指定前述两个URL时)脚本安装的URL是非安全连接的http,那么脚本将无法检查更新。该选项停用时,http和https都能用。
(这恐怕是现在Greasemonkey v0.9.18最让人难以理解的地方,由于用户从userscripts.org安装的脚本的URL都不是https的,这也导致在默认设置下不进行大多数脚本的自动更新。Greasemonkey不像Scriptish会智能地把http的URL变成https,而是很死板的,没有告诉它https只告诉它http的URL,它就不知道https的URL是什么了。当然或许以后版本的Greasemonkey会变一变)

默认自动检查更新,间隔7天,可设置调整。

另参考:http://www.greasespot.net/2012/02/automatic-script-updates-come-to.html


Scriptish

只需@updateURL,无需@downloadURL,填了的@downloadURL会被无视。

@updateURL可填写.user.js的URL,也可填写.meta.js。填了.meta.js的话,检查版本时使用.meta.js的URL,下载最新脚本时将.meta.js的URL中.meta.js换成.user.js,作为下载用的URL,域名路径等都不变。

如果未指定@updateURL则使用脚本的安装URL的功能,Scriptish默认未开启,可设置开启。

默认启用通过https安全连接更新的选项。但和Greasemonkey不是https就不更新不同,如果@updateURL或脚本安装的URL是http,Scriptish在更新脚本时会帮你变成https。

默认不自动检查更新,用户要在每个脚本的设置中开启。

修改自动检查更新的时间间隔,要在about:config中设置extensions.scriptish.update.uso.interval,单位为秒。

Firefox隐私浏览模式下脚本的安装URL会无法获取,Greasemonkey应该也是。

另参考:https://github.com/scriptish/scriptish/wiki/Manual%3A-Metadata-Block


总结

对于脚本作者,想尽可能支持两扩展的检查更新功能的话,应该@updateURL、@downloadURL都填,且填https的URL,@updateURL最好填.meta.js,@downloadURL则填.user.js,如:
// @updateURL      https://userscripts.org/scripts/source/116879.meta.js
// @downloadURL    https://userscripts.org/scripts/source/116879.user.js
这样Greasemonkey 0.9.18+安装该脚本后将能够自动检查更新(在默认设置下),Scriptish则要用户设置自动检查。

想支持Greasemonkey v0.9.18+和Scriptish的更新功能,又兼容其他无更新功能的扩展或浏览器的脚本作者须知:Greasemonkey v0.9.18+的GM_info.scriptWillUpdate返回布林值,true即该脚本会更新,false即不会;Scriptish也有GM_updatingEnabled值,但是是反映扩展有没有检查更新功能,更像是版本判断,而不能反映脚本当前到底是否能够正常更新或已开启自动更新功能。

想要让几乎所有脚本全用上自动更新的话,对于Greasemonkey用户,升级到Greasemonkey 0.9.18后重装脚本,并关闭通过https安全连接更新脚本的选项。

对于Scriptish用户,设置开启未指定@updateURL则使用脚本的安装URL的功能,并对每个脚本设置自动检查更新。

最新喜欢:

文科文科
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-28
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
1楼#
发布于:2012-03-30 19:46
一直使用scriptish的其中一个原因就是可以自动更新脚本,一方面支持@updateURL,另一方面在脚本没有这条命令的情况下,可以检查其下载地址是否有更新。
Firefox More than meets your experience
游客

返回顶部