URL を指定して周期的にページを自動リロードするスクリプト
マーケット情報やテレビ番組表のように「一定間隔で繰り返し」+「時間ピッタリ」にページをリロードしたい場合があります。そのようなケースで使える簡単な Greasemonkey スクリプトです
利用にはFirefox アドオンの Greasemonkey もしくは Scriptish が必要です(未確認だけど Google Chrome でも動くはず)
- http://userscripts.org/scripts/show/103760 から簡単にインストール
- インストール後はプリセットの urlList60(1時間毎にリロード)、urlList30(30分毎にリロード)、urlList10(10分毎にリロード)、urlList1(1分毎にリロード)にそれぞれ URL (の一部)を追加するだけ
リロードのタイミングは、秒が常にゼロ。分も設定の倍数であることに注意
// ==UserScript== // @name Page Reloader with Presets // @description Reload specific pages cyclically // @version 1.0 // @author k2jp // @namespace http://d.hatena.ne.jp/k2jp/ // @description Reload pages periodically // @include http://* // @include https://* // @exclude about:blank // ==/UserScript== // Home URL : http://userscripts.org/scripts/show/103760 // ChangeLog // 1.0 : Initial Release. (function(){ window.addEventListener("load", function(){ var urlList60 = [ // Updates once an hour when Minutes:Seconds = 00:00 'http://tv.so-net.ne.jp/chart/' ]; var urlList30 = [ // Updates once every 30 minutes when Minutes:Seconds = 00:00 or 30:00 'http://www.translink.co.jp/' ]; var urlList10 = [ // Updates once every 10 minutes when Minutes:Seconds = 00:00 or 10:00 or 20:00 or 30:00 or 40:00 or 50:00 'http://finance.yahoo.com/' ]; var urlList1 = [ // Updates once a minute when Seconds = 00 'http://chartpark.com/', 'http://chartpark.net/', 'http://finance.yahoo.com/intlindices?', 'http://www.google.com/finance' ]; var isElementMatchList = function(element, index, array){ return (window.location.href.indexOf(element) != -1); }; var urlCondition60 = function() { return urlList60.some(isElementMatchList); }; var urlCondition30 = function(){ return urlList30.some(isElementMatchList); }; var urlCondition10 = function(){ return urlList10.some(isElementMatchList); }; var urlCondition1 = function(){ return urlList1.some(isElementMatchList); }; var targetTime = new Date(); targetTime.setSeconds(0); var diff2Update = 0; if( urlCondition60() ){ targetTime.setMinutes(60); diff2Update = targetTime.getTime() - new Date().getTime(); } if( urlCondition30() ){ targetTime.setMinutes(targetTime.getMinutes() + 30 - targetTime.getMinutes()%30); diff2Update = targetTime.getTime() - new Date().getTime(); } else if( urlCondition10() ){ targetTime.setMinutes(targetTime.getMinutes() + 10 - targetTime.getMinutes()%10); diff2Update = targetTime.getTime() - new Date().getTime(); } else if( urlCondition1() ){ targetTime.setSeconds(60); diff2Update = targetTime.getTime() - new Date().getTime(); } if(diff2Update){ setTimeout( function(){ window.location.reload(); } , diff2Update); } } , false); }) ();