はてなダイアリーを投稿前に自動セーブするGreaseMonkeyスクリプト

はてなダイアリーは結構な頻度でエラーが出ますけど、日記を投稿したときに例の犬が現れて書いていたエントリが消滅したりすると、あのウェルシュコーギーペンブロークを韓国に強制連行して(-- 禁則事項のため削除 --)。もちろん、はてなが大好きなはてなー(棒読み)の自分は、そんな非人道的な事したくないのでHTML 5のストレージ機能を使ってsubmitする前にデータをセーブするグリモンスクリプトを書いてエントリ消滅に備える事にした。

// ==UserScript==
// @name           HatenaDiaryAutoSave
// @namespace      http://nullpon.moe/
// @description    はてなダイアリーを自動保存する
// @include        http://d.hatena.ne.jp/*/edit
// ==/UserScript==
window.addEventListener("unload",saveHatenaDiary,true);
window.addEventListener("load",loadHatenaDiary,true);
function saveHatenaDiary() {
   var diary = document.getElementById("textarea-edit").value;
   if (diary) {
       window.localStorage.setItem("diaryBackUp", diary);
   }
}

function loadHatenaDiary() {
   var diary = window.localStorage.getItem("diaryBackUp");
   if (diary) {
      document.getElementById("textarea-edit").value = diary;
   }
}
GM_registerMenuCommand("load", loadHatenaDiary);

HTML5のクライアントサイドストレージ機能はキーバリューによるデータストアとSQLデータベースの2種類の仕様が検討されていますが、キーバリューはFirefox 3で既に実装されており、IEも8で実装される予定です。使い方もこのグリモンのように簡単なのでHTML 5の機能では比較的早期に普及しそうです。いつの間にか目立たないけど色々な場所で使われているようになりそうですね。

追記

とか得意げに書いていたら、はてなダイアリーに自動バックアップ機能あるし…、全然気付かなかった。テラバカスw

local_storage.jsというスクリプトを読み込み、swfを使ってバックアップしているようです。ま、HTML 5のクライアントサイドストレージを使えば、Flashなんぞに頼らなくても簡単に作成できるようになります、と言う事にしておいてください。