簡體   English   中英

防止/停止自動錨鏈接的發生

[英]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 功能。從不知道它存在。)

編輯:

  1. 首先滾動到頂部(快速,無效果),然后調用您的滾動 function。 (我知道它不那么漂亮)
  2. 或者只使用前綴

我知道這是一個舊線程,但我發現了一些不需要滾動的東西。 在任何其他腳本之前先運行它。 它在頁面上的第一個元素之前放置一個錨點,以防止滾動,因為它位於頁面頂部。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM