pixivのスタックフィードのAutoPagerizeみたいなのを作ってみた - その3 - OperaのgetBoundingClientRectのバグにぶち当たる

昨日に続きアップデートしてuserscripts.orgに投稿。


主な改良点はリアクションのページで次ページ読み込み後に
新しいコメントを書くと正常に表示されない問題の修正。
あとAutoPagerizeみたいにアイコンにマウスを載せると
メニューが出るようにしたこと。


他にも細かな修正があるので既にインストールした方はアップデート推奨。
jQueryの書き方も少し調べて改善した。


で作ってみてFirefoxGoogle Chromeと正常に動いた物のOperaじゃ動かなかった。
調べてみると以下の部分が正しい値から遙かに大きな値を返してきてるようだった。


$j('#insert_comment, #insert_status').offset().top
それなので仕方なく今度はjQueryを使わずに「getBoundingClientRect」で
絶対座標を求めようとしたら同じ逸脱した値が返ってきた。
ためしにjQueryのソースを見たら同じ操作をしていた。
どうやらOperaは「getBoundingClientRect」で正しくない値を返すことが
あるらしい。


参考http://my.opera.com/edvakf/blog/2008/10/16/opera-9-60
どうやら9.60からのバグみたい。


せっかくなのでpixivのスタックフィードでjQueryと同時に使われている
prototype.jsを活用して次のように要素の絶対値を求めてみた。

Position.positionedOffset($j('#insert_comment, #insert_status').get(0))[1]
prototype.jsjQueryの様にセレクタの順番に関係なくDOMの構造順に
該当する1番目の要素をどう取り出せばいいのか分からなかったのでjQuery
セレクタとして使った。


prototype.jsも勉強してみようかな。