I've got a Greasemonkey script for Firefox. The script includes this meta-block and some lines of code.
I want to update my script on the server and then automatically update the browser's scripts. The requireSecureUpdates
option is off.
What am I doing wrong?
My 1.meta.js
// ==UserScript==
// @name Ibood autosubmit
// @include https://*.ibood.com/*
// @include http://*.ibood.com/*
// @include *
// @version 1.1
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_addStyle
// @downloadURL http://www.tipsvoorbesparen.nl/1.user.js
// @updateURL http://www.tipsvoorbesparen.nl/1.meta.js
// ==/UserScript==
Two problems:
Currently, your 1.meta.js
is:
// ==UserScript==
// @name Ibood autosubmit
// @include https://*.ibood.com/*
// @include http://*.ibood.com/*
// @include *
// @version 1.7
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_addStyle
// @downloadURL http://www.tipsvoorbesparen.nl/1.user.js
// @updateURL http://www.tipsvoorbesparen.nl/1.meta.js
// ==/UserScript==
Note the leading spaces?
Greasemonkey cannot handle leading spaces for its Metadata Block due to a design limitation1.
The current script version seems to be 1.8, but the meta file has version 1.7.
~~~~~
For small scripts, that you host on your own website, don't even bother with the @updateURL
setting. That's there mainly to conserve bandwidth, especially on sites like userscripts.org.
With no @updateURL
setting, Greasemonkey will just use/check whatever's set by @downloadURL
. This saves you extra maintenance work (and possible SNAFU's like this one).
Finally, on an unrelated note, don't use @include *
!
Using @include *
:
1. Specifically, this bit in the GM source file, parseScript.js
:
var gAllMetaRegexp = new RegExp(
'^// ==UserScript==([\\s\\S]*?)^// ==/UserScript==', 'm');