I wish to load a list of webpages sequentially, with Greasemonkey.
var list = array ('', 'site2', 'site3', 'site4');
window.location.href = list[0];
The script should work as follows: open site 1, wait 5 seconds, open site 2, wait 5 seconds, etc.
I don't know how to make the script open sites in sequence, maybe pare the actual URL to the list and move on the next one(?).
I wish to load a list of webpages sequentially, with Greasemonkey.
var list = array ('http://www.google.', 'site2', 'site3', 'site4');
window.location.href = list[0];
The script should work as follows: open site 1, wait 5 seconds, open site 2, wait 5 seconds, etc.
I don't know how to make the script open sites in sequence, maybe pare the actual URL to the list and move on the next one(?).
Share Improve this question edited Jul 16, 2019 at 22:28 Peter Mortensen 31.6k22 gold badges110 silver badges133 bronze badges asked Sep 4, 2012 at 9:26 GiorgioGiorgio 1,6135 gold badges29 silver badges53 bronze badges2 Answers
Reset to default 4This approach, for Chrome, will also work in Greasemonkey.
Put your sites in an array, like that, but you must also set your @include
, @exclude
, and @match
directives to fire on the appropriate sites.
Putting it all together, here's a plete script:
// ==UserScript==
// @name Multipage, MultiSite slideshow of sorts
// @include http://google./*
// @include http://site2/*
// @include http://site3/*
// @include http://site4/*
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a major design
change introduced in GM 1.0.
It restores the sandbox.
*/
var urlsToLoad = [
'http://google./'
, 'http://site2/somepage/'
, 'http://site3/somepage/'
, 'http://site4/somepage/'
];
/*--- Since many of these sites load large pictures, Chrome's and
Firefox's injection may fire a good deal before the image(s)
finish loading.
So, insure script fires after load:
*/
window.addEventListener ("load", FireTimer, false);
if (document.readyState == "plete") {
FireTimer ();
}
//--- Catch new pages loaded by WELL BEHAVED ajax.
window.addEventListener ("hashchange", FireTimer, false);
function FireTimer () {
setTimeout (GotoNextURL, 5000); // 5000 == 5 seconds
}
function GotoNextURL () {
var numUrls = urlsToLoad.length;
var urlIdx = urlsToLoad.indexOf (location.href);
urlIdx++;
if (urlIdx >= numUrls)
urlIdx = 0;
location.href = urlsToLoad[urlIdx];
}
Two ways I can think of for doing this are:
Using gm_getvalue
, gm_setvalue
to retrieve, store the index of current site in list
to Greasemonkey's persistent memory.
Or, using something like:
setTimeout(function(){
window.location.href = (list.length > list.indexOf(window.location.href)) ? list[list.indexOf(window.location.href)+1] : list[0];
},5000)