[英]Prevent/stop auto anchor link from occurring
使用 link.html#idX 和 <div id="idX"/> 時,我需要防止瀏覽器中的自動滾動到行為。
我試圖解決的問題是我試圖通過檢測 url 中的錨點來在頁面加載時執行自定義滾動到功能,但到目前為止還無法阻止自動滾動功能(特別是在 Firefox 中) .
有任何想法嗎? 我在 $(window).load() 處理程序上嘗試了 preventDefault() ,這似乎不起作用。
讓我重申一下,這是針對在滾動頁面中未點擊的鏈接; 它適用於在頁面加載時滾動的鏈接。 考慮單擊鏈接中帶有#anchor 的另一個網站的鏈接。 是什么阻止了自動滾動到 id?
每個人都明白我不是在尋找解決方法; 我需要知道是否(以及如何)可以防止在頁面加載時自動滾動到#anchors。
這並不是問題的真正答案,只是一個簡單的比賽條件風格的 kluge。
使用 jQuery 的 scrollTo 插件滾動回頁面頂部,然后使用自定義的東西重新激活滾動。 如果瀏覽器/計算機足夠快,則頁面上沒有“flash”。
只是建議這個我覺得很臟...
$(document).ready(function(){
// fix the url#id scrollto "effect" (that can't be
// aborted apparently in FF), by scrolling back
// to the top of the page.
$.scrollTo('body',0);
otherAnimateStuffHappensNow();
});
歸功於 wombleton的指出。 謝謝!
這似乎是我可以看到的唯一選項:
$(document).ready(function() {
$.scrollTo('0px');
});
它不會自動滾動到類。
因此,如果您使用獨特的類來標識您的 div,您在查找元素時會失去一點速度,但會獲得您所追求的行為。
(順便說一句,感謝您指出滾動到 ID 功能。從不知道它存在。)
編輯:
我知道這是一個舊線程,但我發現了一些不需要滾動的東西。 在任何其他腳本之前先運行它。 它在頁面上的第一個元素之前放置一個錨點,以防止滾動,因為它位於頁面頂部。
function getAnchor(sUrl)
{
if( typeof sUrl == 'string' )
{
var i = sUrl.indexOf( '#' );
if( i >= 0 )
{ return sUrl.substr( i+1 ).replace(/ /g, ''); }
}
return '';
};
var s = getAnchor(window.location.href);
if( s.length > 0 )
{ $('<a name="'+s+'"/>').insertBefore($('body').first()); }
干杯! 歐文·漢傑斯
這對我來說效果很好:
1-把這個放在你的 css 文件上
a[name] { position: absolute; top: 0px }
2-在你開始動畫之前把它放在你的document.ready綁定上(如果你正在制作動畫)
$("a[name]").css("position","relative");
可能需要根據您的樣式表/代碼進行調整,但您明白了。
歸功於:http://cssbeauty.com/skillshare/discussion/1882/disable-anchor-jump/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.