2

Greasemonkeyを使用して、Webページのリストを順番にロードしたいと思います。

var list = array ('http://www.google.com', 'site2', 'site3', 'site4');
window.location.href = list[0];

スクリプトは次のように機能するはずです:サイト1を開く、5秒待つ、サイト2を開く、5秒待つなど。

スクリプトでサイトを順番に開く方法がわかりません。実際のURLをリストと比較して、次のURLに移動する可能性があります(?)。

4

2 に答える 2

4

このアプローチは、Chromeの場合、Greasemonkeyでも機能します。

このようにサイトを配列に配置しますが、適切なサイトで起動するように@include、、、@excludeおよび@matchディレクティブも設定する必要があります。

すべてをまとめると、完全なスクリプトがここにあります:

// ==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];
}
于 2012-09-04T10:09:54.277 に答える
1

これを行うために私が考えることができる2つの方法は次のとおりです。

を使用してgm_getvaluegm_setvalue現在のサイトのインデックスを取得し、listGreasemonkeyの永続メモリに保存します。

または、次のようなものを使用します。

setTimeout(function(){
    window.location.href = (list.length > list.indexOf(window.location.href)) ? list[list.indexOf(window.location.href)+1] : list[0];
},5000)
于 2012-09-04T09:44:03.187 に答える