I wish to load a list of webpages sequentially, with Greasemonkey.
var list = array ('http://www.google.com', '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 compare the actual URL to the list and move on the next one(?).
This 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 complete script:
// ==UserScript==
// @name Multipage, MultiSite slideshow of sorts
// @include http://google.com/*
// @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.com/'
, '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 == "complete") {
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];
}