There are 4 previous versions of this script.
// ==UserScript==
// @name Script Update Checker
// @namespace http://www.crappytools.net
// @description Code to add to any Greasemonkey script to let it check for updates.
// @include *
// ==/UserScript==
// NOTES:
// Feel free to copy this into any script you write; that's what it's here for. A credit and/or URL back to here would be appreciated, though.
// I was careful to use as few variables as I could so it would be easy to paste right into an existing script. All the ones you need to set are at the very top.
// The target script needs to be uploaded to userscripts.org. The update checks will -not- increase the install count for the script there.
// This script is set up to check for updates to itself by default. It may be a good idea to leave it like this.
var SUC_script_num = 20145; // Change this to the number given to the script by userscripts.org (check the address bar)
try
{
function updateCheck(forced)
{
if ((forced) || (parseInt(GM_getValue('SUC_last_update', '0')) + 86400000 <= (new Date().getTime()))) // Checks once a day (24 h * 60 m * 60 s * 1000 ms)
{
try
{
GM_xmlhttpRequest(
{
method: 'GET',
url: 'http://userscripts.org/scripts/source/'+SUC_script_num+'.meta.js?'+new Date().getTime(),
headers: {'Cache-Control': 'no-cache'},
onload: function(resp)
{
var local_version, remote_version, rt, script_name;
rt=resp.responseText;
GM_setValue('SUC_last_update', new Date().getTime()+'');
remote_version=parseInt(/@uso:version\s*(.*?)\s*$/m.exec(rt)[1]);
local_version=parseInt(GM_getValue('SUC_current_version', '-1'));
if(local_version!=-1)
{
script_name = (/@name\s*(.*?)\s*$/m.exec(rt))[1];
GM_setValue('SUC_target_script_name', script_name);
if (remote_version > local_version)
{
if(confirm('There is an update available for the Greasemonkey script "'+script_name+'."\nWould you like to go to the install page now?'))
{
GM_openInTab('http://userscripts.org/scripts/show/'+SUC_script_num);
GM_setValue('SUC_current_version', remote_version);
}
}
else if (forced)
alert('No update is available for "'+script_name+'."');
}
else
GM_setValue('SUC_current_version', remote_version+'');
}
});
}
catch (err)
{
if (forced)
alert('An error occurred while checking for updates:\n'+err);
}
}
}
GM_registerMenuCommand(GM_getValue('SUC_target_script_name', '???') + ' - Manual Update Check', function()
{
updateCheck(true);
});
updateCheck(false);
}
catch(err)
{}
// Below is a compact version of the snippet with the main body of the code in one line so it's less distracting when looking through the script source.
// Simply uncomment and use like the above.
/*
var SUC_script_num = 20145; // Change this to the number given to the script by userscripts.org (check the address bar)
try{function updateCheck(forced){if ((forced) || (parseInt(GM_getValue('SUC_last_update', '0')) + 86400000 <= (new Date().getTime()))){try{GM_xmlhttpRequest({method: 'GET',url: 'http://userscripts.org/scripts/source/'+SUC_script_num+'.meta.js?'+new Date().getTime(),headers: {'Cache-Control': 'no-cache'},onload: function(resp){var local_version, remote_version, rt, script_name;rt=resp.responseText;GM_setValue('SUC_last_update', new Date().getTime()+'');remote_version=parseInt(/@uso:version\s*(.*?)\s*$/m.exec(rt)[1]);local_version=parseInt(GM_getValue('SUC_current_version', '-1'));if(local_version!=-1){script_name = (/@name\s*(.*?)\s*$/m.exec(rt))[1];GM_setValue('SUC_target_script_name', script_name);if (remote_version > local_version){if(confirm('There is an update available for the Greasemonkey script "'+script_name+'."\nWould you like to go to the install page now?')){GM_openInTab('http://userscripts.org/scripts/show/'+SUC_script_num);GM_setValue('SUC_current_version', remote_version);}}else if (forced)alert('No update is available for "'+script_name+'."');}else GM_setValue('SUC_current_version', remote_version+'');}});}catch (err){if (forced)alert('An error occurred while checking for updates:\n'+err);}}}GM_registerMenuCommand(GM_getValue('SUC_target_script_name', '???') + ' - Manual Update Check', function(){updateCheck(true);});updateCheck(false);}catch(err){}
*/
