最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How do I open a list of pages automatically and sequentially? - Stack Overflow

programmeradmin6浏览0评论

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 badges
Add a ment  | 

2 Answers 2

Reset to default 4

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 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)
发布评论

评论列表(0)

  1. 暂无评论