Opera9でのタグサジェスト対応について
『「はてなにOpera対応を迫るオフ」応援キャンペーン』です。f(^^)
idea:11957とidea: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]』に変えただけ。ちょっとナゲヤリですんません)
あの擬似サジェスト機能は、OperaがIEの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)でも擬似サジェスト機能が動作することを確認しました。