【问题标题】:Using Javascript, Prevent Scroll on Empty URL Hash Change使用 Javascript,防止在空 URL 哈希更改上滚动
【发布时间】:2013-12-13 16:50:51
【问题描述】:

我想检测 hashchanges,如果 hash 为空,阻止它滚动到屏幕顶部。

这是我所拥有的:

// Older version of jQuery, so can't use .on()
jQuery(window).bind("hashchange", function (e) {
    if (window.location.hash == "") e.preventdefault();
    else alert(window.location.hash);
});

把它放到你的控制台中,你可以看到它正确地检测到哈希变化和警报,如果它们不只是“#”,但如果你改变它,将“#”附加到你的 url,它仍然会滚动到顶部。

当您将空哈希“#”添加到您的网址时,如何防止屏幕转到页面顶部?

【问题讨论】:

  • 最后一句话对我来说毫无意义:(
  • 如果你在你的url后面加上#,它会把你带回屏幕顶部,我该如何防止呢?

标签: javascript jquery url


【解决方案1】:
    $(function() {
        $('a').click(function(e) {
             var lnkHref = $(this).attr('href');
             if (lnkHref.substr(lnkHref.length - 1) == '#')
             {             
                 e.preventDefault();

                 // optional if you want to redirect still
                 var trimmedUrl = lnkHref.substr(0, lnkHref.length - 1);
                 document.location.href = trimmedUrl;
             }
        }); 
     })

【讨论】:

  • 我的哈希变化不是由点击触发的,它们发生在不同的地方。我想跟踪 hashchange。
  • 好的,我想我当时很难理解这个问题。也许最好关注为什么手动将哈希添加到 URL 末尾或其他原因,并在那里解决问题,而不是尝试修补不应该发生的事情。
猜你喜欢
  • 2013-03-31
  • 2015-05-01
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多