bricklife.weblog."Safari「でも」使える MT Bookmarklet" には、ブラウザの違いを吸収するテキスト選択型のブックマークレットが紹介されている。しかし、残念ながら仕様によりIE6では動作しない。
ブラウザ内のテキストを選択してブックマークレットを起動すると、Javascript の命令をひとつずつ試して、内容が空でなかったらそれを選択テキストとして採用し、その後の処理にまわすというもの。「ブラウザによって選択テキストを取得する関数が違う」という問題を解決しようという試みである。
元ネタはJAVASCRIPT::BOOKMARKLETであるとのことだが、このように解説してくれるのは嬉しい。
コメントに IE6SP2 では動作しないとある。色々試してみたところ、Internet Explorer 6 で動作しない理由は、スクリプトが長すぎるためであることが分かった。IE6 には文字数制限があるようで、508 文字までしか動作しないのである。509 文字以上にすると、動作しないだけでなく、構文エラーであってもエラーメッセージも出さないという中途半端な仕様になっている。仕様というよりは不具合に近い。
508 文字をキーにして探してみると、Bookmarklet - ブックマークレットを作成する際のポイントに解説されていた。IE5.5 であれば 508 文字以上でもよいらしい。しかし IE5.5 のサポートは終了しているのであった(Microsoft Internet Explorer : Internet Explorer 5.x ダウンロード)。
さらに、Redaktionstool - fett, kursiv JavaScript bei phpforum.de dem deutschen PHP-Forum によれば、window.selection() による取得もあるようなので、総合すれば次のようになるだろうか(実際は1行)。
長くなる一方である。
2005年8月21日追記:
Java スクリプト本体をネットワーク上の参照できるところに置いて,その URL を指定することで,文字数の制限にとらわれずに長いスクリプトを書くことができるアイデアを見つけました(川o・-・)<2nd life - bookmarkletの文字数制限を無くす)。
Master Archive Index
Total Entry Count: 1957
トラックバックありがとうございます。
Posted by: ooba at February 27, 2004 17:52調べる時間がなくほおって置いたんですが、
調査していただいたとは恐縮です(^^;
文字制限があったんですね。
収まるように直してみます。
あ、といっても、サーバのURLで長さ変わっちゃうんでした(^^;
Posted by: ooba at February 27, 2004 18:11やっぱり別々のBookmarkletにしたほうがよさそうです、残念ですが。
ドメイン名を思い切り短くして、オプションをできるだけ少なくすればできるかも知れませんが、正しい道ではないような気がします。
Posted by: n at February 27, 2004 18:19