pixivのスタックフィードのAutoPagerizeみたいなのを作ってみた - その3 - OperaのgetBoundingClientRectのバグにぶち当たる
昨日に続きアップデートしてuserscripts.orgに投稿。
主な改良点はリアクションのページで次ページ読み込み後に
新しいコメントを書くと正常に表示されない問題の修正。
あとAutoPagerizeみたいにアイコンにマウスを載せると
メニューが出るようにしたこと。
他にも細かな修正があるので既にインストールした方はアップデート推奨。
jQueryの書き方も少し調べて改善した。
で作ってみてFirefox、Google Chromeと正常に動いた物のOperaじゃ動かなかった。
調べてみると以下の部分が正しい値から遙かに大きな値を返してきてるようだった。
それなので仕方なく今度はjQueryを使わずに「getBoundingClientRect」で
$j('#insert_comment, #insert_status').offset().top
絶対座標を求めようとしたら同じ逸脱した値が返ってきた。
ためしにjQueryのソースを見たら同じ操作をしていた。
どうやらOperaは「getBoundingClientRect」で正しくない値を返すことが
あるらしい。
参考:http://my.opera.com/edvakf/blog/2008/10/16/opera-9-60
どうやら9.60からのバグみたい。
せっかくなのでpixivのスタックフィードでjQueryと同時に使われている
prototype.jsを活用して次のように要素の絶対値を求めてみた。
prototype.jsでjQueryの様にセレクタの順番に関係なくDOMの構造順に
Position.positionedOffset($j('#insert_comment, #insert_status').get(0))[1]
該当する1番目の要素をどう取り出せばいいのか分からなかったのでjQueryを
セレクタとして使った。
prototype.jsも勉強してみようかな。