OperaのgetBoundingClientRectとgetClientRectsは変わった条件だと他のブラウザと違う値を返すことがある

追記:コメントでご指摘を頂きタイトル、内容を修正しました。





以前書いた記事でOperaの10.60でgetBoundingClientRectがうまく動作しないと
書いたがどうやら9.60からのようだ。
ただし以下の参考に載っているバグは10.0で解決しています。
参考:http://d.hatena.ne.jp/edvakf/20081016/1224183371


つまりOperaも対象として使いたいJavaScript中ではgetBoundingClientRectや
getClientRects、またgetBoundingClientRectを内部で使ってるjQuery
offset関数も気軽には使えないようだ。



つまり要素の絶対座標をクロスブラウザに求めるにはoffsetTopとoffsetLeftを
offsetParentをたどって足し合わせろと言うことなのか。



念のため昨日でた10.61でも試してみたが駄目だった。


今回の場合http://www.pixiv.net/stacc/のページでインライン要素のspan
(idが「insert_status」の物)の中にブロック要素のdivを並べるという
間違った事をやっているため、spanのgetBoundingClientRectの実行結果で
異様な値が出たようだ。またインライン要素の中にbr要素だけを含めるという
これも異様な事をやるとそのインライン要素のgetBoundingClientRectの
実行結果が異様な値を返すようだ。




そのため正しく書いていればgetBoundingClientRectやgetClientRectsが
異様な値を返すと言うことはなく、jQueryのoffset関数も含めて期待したように
動いてくれると思われる。