Bookmarklet を配布するときの悩みの種が、一度配布したコードのメンテナンス。ウェブアプリケーションの一機能として Bookmarklet を使う場合にこの問題は結構厄介です。
例えば、はてなブックマークは自分のブックマークにブックマークを追加するのに Bookmarklet を使うのですが、何か Bookmarklet の JavaScrpipt のコード側にバグがあったとか、機能を追加したいという場合に毎回アナウンスして Bookmarklet をセットアップし直してもらう必要があります。(今のところ、そういったことはないのですが。) ウェブアプリケーション、というかサーバーサイドアプリケーションの最大のメリットである、徐々に機能を追加していくというフローに、配布型の Bookmarklet の仕組みが合わないんですね。
それが悩ましいので、はてなブックマークの Bookmarklet は、それを実行した先でサーバーサイドのプログラムを呼び出して、そちら側になるべく機能を集中させるようにしています。
が、今日素晴らしい情報を発見。
bookmarkletを作るとき、IEでは500文字ちょい、Firefoxでは2000文字ぐらい(?)の文字数制限がある。また、作った後に一行にまとめたり、デバッグしたりも大変面倒。でもそれがとても簡単な方法でどうにでもなることをインターフェイス!インターフェイス!の人に教わった。
表題は文字数制限をなくす、ということなのですが、実際のコードは document.createElement で script エレメントを作ってやってそこで src で外部ファイルを読むようにしてやるというもの。
この方法を使えば、JavaScript のコードそのものをサーバー側に置いた Bookmarklet が作れます。素晴らしい。
この手法がblog事業者みたいなところで公式にサービスされるとちょっと怖い面もあるかも。
URLが固定されている上にユーザー数が多いですから
・DNS毒もしくはhostsをいじる
・管理下のプロクシにプロクシ設定をさせて該当bookmarkletの差し替え
などで取っ掛かりをつけられそうですね。
XMLHttpRequest でスクリプトをロードして eval とかでもいいかも(試してないですが)。
[2] Posted by: とおる。 at May 9, 2005 05:50 PM [返信]