IEの場合だけoffset.topが絶対座標を返さない(jQuery)

マウスオーバーでメニューバーの「上に」メニューを表示する機能を実装していたら、IEの場合だけoffset.topの値がおかしい事に気づいた。

日々の小ネタ:IEにおける座標の取得

またもや先人達の貴重なページのおかげで、IEの場合だけoffset.topの値がスクロール量を差し引いた「表示画面内の位置」、IE以外はスクロールを考えない「ドキュメント全体内の位置」を示している事に気づいた。jQueryでもいまだに解消されていないブラウザ間の差異だ。
仕方なくブラウザで場合分けしたコードを書いた。

var v_parent_menu_top = $(‘#parent_menu’).offset().top;
if ($.support[‘cssFloat’]) {

var v_new_top = v_parent_menu_top – v_menu_box_height;

} else {

var v_new_top = v_parent_menu_top – v_menu_box_height + $(‘html:first’).scrollTop();

}

いつまでたってもシステム屋の苦労が絶えないわけである。

Leave a Reply

Your email address will not be published. Required fields are marked *