Opera9でのタグサジェスト対応について

 『「はてなOpera対応を迫るオフ」応援キャンペーン』です。f(^^)
 idea:11957idea:14072の対策として。
 Opera9系では、ブックマーク登録時のタグのインクリメンタルサーチが機能していません。確かにOpera8系決め打ちです。
 あのOpera8対応コードの(もっとずっと泥臭かった)オリジナルを書いた者として、Opera9対応の指針を書いておきます。


 http://b.hatena.ne.jp/js/tag_suggest.js

var isOpera8 = navigator.userAgent.match(/Opera[\s\/]8\.\d+/);

var isOpera8 = navigator.userAgent.match(/Opera[\s\/][89]\.\d+/);

に書き換えれば、Opera8のときと同様の擬似サジェストは働きます。(『8』を『[89]』に変えただけ。ちょっとナゲヤリですんません)
 あの擬似サジェスト機能は、OperaIEのDOMに完全対応していなかった為、IEのようにTextRangeオブジェクトがsetEndPointプロパティに対応してなかったか何かで、ウンウンうなりながらでっち上げた記憶があります。Opera9なら、ひょっとしたら、IE互換で動くのかもしれません。キーマップだけはOpera独自のような気はしますが。。。
 気が向いたら実験してみます。


 あと、getCaretPos(target)関数の

commentInput.value.match(/^((\[[^\[\]]+?\]){0,2}\[[^\[\]]*)(\[[^\[\]]+?\]){0,2}/)

は、タグの入力制限が3つまでだったときの名残ですので、

commentInput.value.match(/^((\[[^\[\]]+?\]){0,9}\[[^\[\]]*)(\[[^\[\]]+?\]){0,9}/)

に変更した方が良いと思います。つまり『{0,2}』を『{0,9}』に変更します。タグは10個までOKとヘルプに書いて有りましたし。f(^^)

追記

 テストしてみましたが、Opera9.1もsetEndPointプロパティに対応してません。IE互換はまだ無理です。Opera8と同じ擬似サジェストで勘弁してください。m(_ _)m
 ・・・一応、『はてなダイアリー日記』と『はてなブックマーク日記』にトラックバックしておきます。

追記(2007-4-13)

 Opera9.20(WinXPSP2)でも擬似サジェスト機能が動作することを確認しました。