offset()
jQueryの関数でクロスブラウザの問題が発生しています。たとえば、アンカータグのオフセットを探しています
例えば。$('#anchorid').offset().top
- Firefox3.6の場合=205
- IE8の場合=204
- IE7の場合=553
ご覧のとおり、各戻り値の違いがわかります。FFとIE8の違いはあまり気になりませんが、IE7などは気になります。
同じまたは類似のクロスブラウザまたはこれに対する可能な修正である、私が使用できる別の機能はありますか?
offset()
jQueryの関数でクロスブラウザの問題が発生しています。たとえば、アンカータグのオフセットを探しています
例えば。$('#anchorid').offset().top
ご覧のとおり、各戻り値の違いがわかります。FFとIE8の違いはあまり気になりませんが、IE7などは気になります。
同じまたは類似のクロスブラウザまたはこれに対する可能な修正である、私が使用できる別の機能はありますか?
マークアップに何か問題がある(クロスブラウザではない)可能性があります。ただし、別の方法として、代わりにネイティブJavaScriptを使用してみることができます。
document.getElementById('anchorid').offsetTop
ページ全体のオフセットを取得したい場合は、次のような関数を使用できます。
function findTotalOffset(obj) {
var ol = ot = 0;
if (obj.offsetParent) {
do {
ol += obj.offsetLeft;
ot += obj.offsetTop;
}while (obj = obj.offsetParent);
}
return {left : ol, top : ot};
}
IE8で、取得したい要素がoffset().top
存在しないページにスクリプトをロードすると、この問題が発生します。
私はそれを次のように解決しました:
if ($('#element').length){
$('#element').offset().top // ...
}
offset().top
要素が存在しない場合は実行しないでください。