ちょっと必要が生じて、ブックマークレットを作ったのでさらしておく(謎)。
一応、Firefox 3.6.8で動作確認。
現在のタブで実行する版
整形したコード。
javascript:(
function(){
var t=window.prompt('Input time','');
if(t){
var msg=window.prompt('Input message','It\'s time to...');
var tt=t.split(':');
tt[0]=parseInt(tt[0]);
tt[1]=parseInt(tt[1]);
tt[2]=parseInt(tt[2]);
var now=new Date();
var target=new Date();
target.setHours(tt[0]);
target.setMinutes(tt[1]?tt[1]:0);
target.setSeconds(tt[2]?tt[2]:0);
var m2='|'+t+':'+msg+'|';
document.title+=m2;
setTimeout(
function(){
alert(m2);
var s = document.title;
var i=s.indexOf(m2);
document.title=s.substring(0,i)+s.substring(i+m2.length);
},
(target.getTime()-now.getTime())
);
}
}
)();
ブックマークへの登録用。
javascript:(function(){var t=window.prompt('Input time','');if(t){var msg=window.prompt('Input message','It\'s time to...');var tt=t.split(':');tt[0]=parseInt(tt[0]);tt[1]=parseInt(tt[1]);tt[2]=parseInt(tt[2]);var now=new Date();var target=new Date();target.setHours(tt[0]);target.setMinutes(tt[1]?tt[1]:0);target.setSeconds(tt[2]?tt[2]:0);var m2='|'+t+':'+msg+'|';document.title+=m2;setTimeout(function(){alert(m2);var s = document.title;var i=s.indexOf(m2);document.title=s.substring(0,i)+s.substring(i+m2.length);},(target.getTime()-now.getTime()));}})();
アラーム用の新規タブ/新規ウィンドウを開く版
整形したコード。
javascript:(
function(){
window.open(
"javascript:(
function(){
var t=window.prompt('Input time','');
if(t){
var msg=window.prompt('Input message','It\’s time to...');
var tt=t.split(':');
tt[0]=parseInt(tt[0]);
tt[1]=parseInt(tt[1]);
tt[2]=parseInt(tt[2]);
var now=new Date();
var target=new Date();
target.setHours(tt[0]);
target.setMinutes(tt[1]?tt[1]:0);
target.setSeconds(tt[2]?tt[2]:0);
var m2='|'+t+':'+msg+'|';
document.title+=m2;
setTimeout(
function(){
alert(m2);
var s = document.title;
var i=s.indexOf(m2);
document.title=s.substring(0,i)+s.substring(i+m2.length);
},
(target.getTime()-now.getTime())
);
}
}
)()",
'hhelibex:__alarm');
}
)();
ブックマークへの登録用。
javascript:(function(){window.open("javascript:(function(){var t=window.prompt('Input time','');if(t){var msg=window.prompt('Input message','It\’s time to...');var tt=t.split(':');tt[0]=parseInt(tt[0]);tt[1]=parseInt(tt[1]);tt[2]=parseInt(tt[2]);var now=new Date();var target=new Date();target.setHours(tt[0]);target.setMinutes(tt[1]?tt[1]:0);target.setSeconds(tt[2]?tt[2]:0);var m2='|'+t+':'+msg+'|';document.title+=m2;setTimeout(function(){alert(m2);var s = document.title;var i=s.indexOf(m2);document.title=s.substring(0,i)+s.substring(i+m2.length);},(target.getTime()-now.getTime()));}})()",'hhelibex:__alarm');})();
難点は、当然のことながら、タイマーを実行しているタブ/ウィンドウを閉じてしまうと設定がおじゃんになってしまうこと。かといって、onunloadイベント拾って‥ということまでは面倒でやりたくなかったので。
携帯のアラームセットしておけばいいじゃん、と言われるとぐうの音も出ない。残念っ!(誰(謎))。