2012
12
28
$(window).bind("load", function(){
setTimeout(function(){
window.scrollTo(0,1);
},1);
});
下記リンクページの各コンテナにそれぞれ#aaa、#bbb、#ccc、#dddと付けています。スマホ実機で各IDへのアンカーリンクへ飛んでみてください。
コンテンツ001へリンク(#aaa)
コンテンツ002へリンク(#bbb)
コンテンツ003へリンク(#ccc)
コンテンツ004へリンク(#ddd)
恐らく上手くアンカーポジションまでリンクできませんよね?
上記のスクリプトが記述されているのでページを読み込んだ後でスクリプトが反応するため、アンカーリンクが無効化されてしまう。
$(function(){
var offset = $( "アンカー先ID").offset();
alert( offset.top + " : " + offset.left );
});
これでアンカー先にコンテンツ002を指定して座標を取得してみます。
コンテンツ002の座標を取得
アラートに表示された数値の左が要素開始からのコンテンツ002までのピクセル数となります。
座標を取得後はこのソースは使わないので削除もしくは非表示に。
$(window).bind("load", function(){
if(location.hash == "アンカー先ID"){
$('html,body').animate({ scrollTop: 取得したアンカー先の座標 }, 'fast');
}
});
前項目で取得した座標を上記スクリプトへ記述することでコンテンツ002(#bbb)へのアンカーリンクが通る
コンテンツ002へリンク(#bbb)
これで外部リンクのURLとハッシュIDがページURLとアンカー先IDと一致したら指定されたアンカー先の座標までページがスクロールしてくれる。