2009-01-06
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; } }
Flash 10 で「はてなダイアリー」の「バックアップ機能」が使えない件とその原因
はじめに
「はてなダイアリー」大好きっこの amachang です。
「はてなダイアリー」には、「バックアップ機能」という機能があってこれがめっちゃ便利です!
バックアップ機能とは
よく、 mixi とかで「せっかく書いたのに日記消えちゃいました><」的な日記をよく見ますよね。
あれをなくしてくれる機能なのです。
その機能は「日記を書く」ページ(http://d.hatena.ne.jp/edit)の一番下にあります。
しかし
Flash 10 では、以下のような状態になってしまい。バックアップ機能が使えません><
これは困りました><
その原因
http://d.hatena.ne.jp/js/local_storage.js で、 Flash のバージョンを以下のように見ている箇所があって、
navigator.plugins["Shockwave Flash"].description.charAt(16)
この
navigator.plugins["Shockwave Flash"].description
の値が Flash 10 では
"Shockwave Flash 10.0 r12"
みたいな値になる。
当然、それの .charAt(16) は "1" となって、
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ < "Shockwave Flash 10.0 r12".charAt(16) は "1"!
| |r┬-| | Flash のバージョンは 1 !
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ < "Shockwave Flash 10.0 r12".charAt(16) は "1"!
| |r┬-| | Flash のバージョンは 1 !
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
ということになってしまっている。
(追記)すでにアイデアにあるみたいですね
- はてなアイデア - バックアップ機能が働かない。原因はflash playerのバージョンが10になって、バージョンチェックが一桁のときしか対応してないから、詳しくはhttp://d.hatena.ne.jp/Cherenkov/20081026/p1
- はてなアイデア - Flashを最新バージョン(10.0.12.36)にすると、詳細編集画面の「日記編集中のバックアップ」が機能せず、「最新版のFlashプレーヤーをインストールしてください」というメッセージがでます。
(追記)だいぶ前から言われてたみたいですね><
はやく直して欲しいです><
.charAt(16) を .match(/\d+/)[0] にすればいいだけだと思うます><

