途中まで書いた記事が失われる事故を未然に防ぐgreasemonkey
幸いなことに私はまだこの事故に遭っていないけど、きっと必要とされている機能のはず。
どうやってつかうの?
firefox限定。
firefoxのアドオンであるgreasemonkeyをインストールしてから下にある、hatena_diary_confirm.user.jsをクリックするとインストールできます。
ソースコード
// ==UserScript== // @name hatena_diary_confirm // @namespace http://d.hatena.ne.jp/Cherenkov/ // @include http://d.hatena.ne.jp/*/edit* // @include http://d.hatena.ne.jp/*/draft?epoch=* // ==/UserScript== var link = document.evaluate("//a[not(@target='_blank')]", document, null, 7, null); for(var i=0;i<link.snapshotLength;i++){ link.snapshotItem(i).setAttribute("onclick","if( !confirm('ページ遷移しますがよろしいですか') ) { return false; }"); }
解説
- リンクを抽出して、そのすべてにクリック時に動作するイベントをセットする。簡易的だ。
注意
- リロード、ページ閉じるときには何もいってくれない。
ググッたらこんなのもあった。
ページ遷移前に確認をする、onbeforeunload - FAX
onbeforeunloadをつかってみる。
onbeforeunloadを取り入れたソースコード
// ==UserScript== // @name hatena_diary_confirm // @namespace http://d.hatena.ne.jp/Cherenkov/ // @include http://d.hatena.ne.jp/*/edit* // @include http://d.hatena.ne.jp/*/draft?epoch=* // ==/UserScript== unsafeWindow.onbeforeunload = function(event){ event = event || window.event; event.returnValue = 'このダイアリーは保存されていない可能性があります。'; }
解説
- onbeforeunloadを使えばスマートにかける。googleドキュメントで表示される確認と同じ!
- ページ遷移、リロード、ページを閉じる、を感知してどうするか確認してくれる。
- 詳細編集でプレビューをみるときもいちいち確認される。これはうざい。
- 下書き保存などするときも確認される。ピンポイントでこのイベントをはずすように書けばいいのかも。めんどくさそう。
どっちにするか
onbeforeunloadのほうがかっこいいけど、今回は緊急性が高い*1ので簡易的でも目的の動作をしてくれる前者を採用します。
インストール
感想
ほかにも
これを気にいろんなとこを確認するといいと思う。
- firefoxのブックマークを削除するとき。
- greasemonkeyのスクリプトをアンインストールするとき。これ重要。だれか書き換えて。やってみたらできた。
ajaxとかもスルスルと処理が進むのはいいけど、あれー確認もしないのー?っていうことあるよね。