IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Flash 10 でも「はてなダイアリー」の「バックアップ機能」を使えるようにするグリースモンキー

とりあえず、書きました。

書いたと言っても、ただ、関数を上書きして、再度 script を実行しているだけですが。

ソースコード

ご自由にご利用、改造、配布してください。

// ==UserScript==
// @name           DiaryBackup
// @namespace      http://d.hatena.ne.jp/
// @include        http://d.hatena.ne.jp/*/edit
// @include        http://d.hatena.ne.jp/*/edit?date=*
// ==/UserScript==

with (unsafeWindow) {
    var nativeDocWrite = document.write;
    var script = $A(document.getElementsByTagName('script')).last();
    var writeBuffer = [];
    document.write = function(html) {
        writeBuffer.push(html);
    };
    try {
        LocalStorage.getFlashVersion = function() {
            return navigator.plugins["Shockwave Flash"].description.match(/\d+/)[0];
        };
        document.write('\
            <div\
                id="storageswf-container"\
                style="background-color:#DDDDDD; border:2px solid #999999; padding:5;">\
                <div\
                    style="text-align:left; width:215; font-weight:bold; font-size:11pt">\
                    <img\
                        id="backup-setting-close"\
                        src="/images/admin/backup-close.gif"\
                        style="float:right; cursor:pointer" />\
                    \u30c0\u30a4\u30a2\u30ea\u30fc\u4fdd\u5b58\u5bb9\u91cf\u8a2d\u5b9a\
                </div>\
        ');
        LocalStorage.writeFlashTag('storageswf', '/tools/storage.swf');
        document.write('\
                <div\
                    class="note"\
                    style="width:215; font-size:10pt; text-align:left">\
                    \u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306b\u4fdd\u5b58\u3059\u308b\u30c7\u30fc\u30bf\u306e\u6700\u5927\u5bb9\u91cf\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\
                    <br />\
                    \u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30fc\u30bf\u306f\u81ea\u52d5\u7684\u306b\u524a\u9664\u3055\u308c\u307e\u3059\u304c\u3001\
                    \u983b\u7e41\u306b\u5bb9\u91cf\u304c\u4e0d\u8db3\u3059\u308b\u5834\u5408\u306f\u6700\u5927\u5bb9\u91cf\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
                </div>\
            </div>\
        ');
    }
    catch(e) {
        alert(e);
    }
    finally {
        var dummy = document.createElement('div');
        dummy.innerHTML = writeBuffer.join('');
        document.body.insertBefore(dummy, script);
        document.write = nativeDocWrite;
    }
}