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();

}

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

識別子、文字列または数がありません。(IE6のみ)

IE6でだけページロード時に「識別子、文字列または数がありません。」というJavaScriptエラーが出る。

IE8では出ない。FireFox3.5.5でも出ない。Chromeでも出ない。IE6でだけエラーになる。
のた打ち回っていろいろ検索してみたら、先人達のこんなページがあった。

識別子、文字列または数がありません。

自分のコードの怪しそうな所を虱潰しにあたってみると、こんなコードがあった。

$.post(
‘https://…..’,
{
‘data_id’ : v_data_id,
},
……..
)

カンマが一つ余計だったので、

$.post(
‘https://…..’,
{
‘data_id’ : v_data_id
},
……..
)

としたらエラーは出なくなった。
この世から早くIE6が消えて欲しいと思った。