読者です 読者をやめる 読者になる 読者になる

gotin blog

Whatever gotin wanna write

任意のページをGoogle GearsにキャッシュさせるGreasemonkeyユーザスクリプト

タイトルそのまんまなスクリプトを書いてみました。
こちら↓です。

bookmark_with_gears_cache.user.js

当然ながらGoogle Gearsがインストールされてないと動作しません。

概略

Google Gearsにはキャッシュの機能があります。
キャッシュされたリソース(htmlとかcssとかjavascriptとか画像とか)は
オフライン状態でも(Google Gearsでローカルにキャッシュしたリソースに)アクセス可能になります。


この機能をGreasemonkeyから利用して任意のページをキャッシュしてみよう、という試みです。
出先でネットワークが使えないところに行きそうだけどこのページまた読んでおきたい、といったときにこの機能でキャッシュしておくとよいと思います。
あとWebでプレゼン資料つくって、これからプレゼンだ、というようなときもキャッシュしておくと良い気がします。

あ、あとキャッシュするだけだとあれなんで、キャッシュしたページの一覧を表示できるようにもしておきました。

自分でつっこみ

そんなの「別名でページを保存」で、「Webページ、完全」で保存すればいいじゃん。
そうですね、そのとおりです。。。
まぁでもこのスクリプト使った方がキャッシュしたり消したりの作業が多少楽になるかなと。

使い方

インストールするとユーザスクリプトコマンドに
「gears bookmark toggle」
というコマンドが追加されます。
そのコマンドを実行すると↓こんな感じでキャッシュしたページの一覧が表示されます。
(Shift-gでも同様の動作をします)
f:id:gotin:20080115034342p:image

インストール直後などで何もキャッシュしていないと
xボタンとcacheボタンだけが表示されます。
↓こんな感じ
f:id:gotin:20080115034512p:image

xボタン

キャッシュ一覧を消します。
(Shift-gもしくはgears bookmark toggleコマンドでも同様の動作をします)

cacheボタン

開いているページをキャッシュします。
(キャッシュ一覧が開いている状態でShift-aでも同様の動作をします)
キャッシュするとき、Google Gearsのダイアログが現れますので、
Allowボタンを押して利用を許可してください。
(そのドメインでのGoogle Gearsの利用を許可している場合は現れません)。
そのサイトにGoogle Gearsを使われてもいいと思う場合は
Remember my decision for this siteをチェックした上でAllowすると
逐一ダイアログが出なくなります。
f:id:gotin:20080115034703p:image
↑Gearsのダイアログ(appjet.comで使おうとした場合)

↓この状態でcacheボタンをおすと
f:id:gotin:20080115034342p:image

キャッシュされて、↓こんな風に一覧にキャッシュしたページが追加される

f:id:gotin:20080115035001p:image
すでにキャッシュずみの場合、freeボタンになります。

freeボタン

今開いているページのキャッシュを解放(削除)します。
(キャッシュ一覧が開いている状態でShift-rでも同様の動作をします)

TODO

  • キャッシュずみのページの場合に何かお知らせする機能(現状一覧を開かないと分からない)。
  • Gearsで面白いのはWorkerpoolだと思ってて、それを使った何かを作ってみたいんだけど、それを活かすケースが思いつかないままでいる。なんとか思いついて何かつくってみる。
  • IFRAMEを使ったりすればどのキャッシュもfreeできる気がしてきた。のでそのように修正。
  • 複数ウィンドウ(タブ)間でキャッシュ一覧が表示上同期できていない。同期するようにする。
  • 大量のページをキャッシュすると一覧で表示しきれなくなってしまう。スクロールするように修正する。

追記

キャッシュ対象の抽出時に他ドメインのリソースも抽出してしまっている部分があり、キャッシュできない現象が発生していました。最新版では修正されています。

再追記 2008/01/17 00:07

TODOをいくつか消化しました。
万が一気になる方は最新版をインストールしてください。