web-dev-qa-db-ja.com

JavaScriptとGreasemonkeyを使用してFirefoxのタブを1つだけリロードしますか?

私はGreasemonkeyとjavascriptを初めて使用しますが、5分ごとにページをリロードする以下のスクリプトを見つけました。

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://ww.bbc.co.uk
    // @grant               none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
window.setTimeout("document.location.reload();", numMinutes*60*1000);

これは機能しますが、@ includeステートメントで指定されたタブだけでなく、開いているすべてのタブを5分ごとに再ロードします。

これを行う方法はありますか?

8
Neil Spencer

そのコードには破損した メタデータブロック があり、そのブロックにはスペースが重要であり、行の先頭に余分なスペースがあるとコードが壊れる可能性があります-すべてのページでスクリプトが起動します(デフォルトの動作)。

更新:破損したブロックの外観は、ここSuperUserでの表示のバグである可能性があります。少し調査します。
Updatier:破損したブロックは本物であり、OPのコードはタブとスペースの組み合わせによってインデントされ、SUの生の投稿をだましましたエディターですが、最終的な表示ではありません。

また、@includeディレクティブは、存在しないWebページを指定しています。 ww.、 対 www.。その行は次のようになります。

// @include     http://www.bbc.co.uk/

またはおそらく:

// @include     http://www.bbc.co.uk/*

ホームページだけでなく、それ以上の効果が必要な場合。

すべてをまとめて、推奨される方法でsetTimeoutを使用します(「autoeval()」の使用は避けてください)。

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://www.bbc.co.uk/
// @grant       none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
setTimeout (location.reload, numMinutes*60*1000);
8
Brock Adams

Javascriptでこれを行う方法はわかりませんが、Firefoxには ReloadEvery というアドオンがあります。それをインストールし、FFを再起動してから、ページを右クリックして、ReloadEveryとtimeを選択します。

2
David