ब्राउज़र व्यवहार में परिवर्तन के कारण इस समाधान की अनुशंसा नहीं की जाती है। अन्य उत्तर देखें।
मूल रूप से, अगर एक लंगर का उपयोग किया जाता है, तो हम विंडोज़ स्क्रॉल इवेंट से जुड़ जाते हैं। यह विचार कि पहली स्क्रॉल घटना ब्राउज़र द्वारा किए गए स्वचालित पुनरावर्तन से संबंधित है। जब ऐसा होता है तो हम अपने स्वयं के स्थान पर करते हैं और फिर बाध्य घटना को हटा देते हैं। यह बाद के पेज स्क्रॉल को सिस्टम को बोर करने से रोकता है।
$(document).ready(function() {
if (window.location.hash) {
//bind to scroll function
$(document).scroll( function() {
var hash = window.location.hash
var hashName = hash.substring(1, hash.length);
var element;
//if element has this id then scroll to it
if ($(hash).length != 0) {
element = $(hash);
}
//catch cases of links that use anchor name
else if ($('a[name="' + hashName + '"]').length != 0)
{
//just use the first one in case there are multiples
element = $('a[name="' + hashName + '"]:first');
}
//if we have a target then go to it
if (element != undefined) {
window.scrollTo(0, element.position().top);
}
//unbind the scroll event
$(document).unbind("scroll");
});
}
});