使用Javascript,防止滚动空URL哈希更改

时间:2013-12-13 16:50:52

标签: javascript jquery url

我想检测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);
});

将它放入您的控制台,您可以看到它正确检测到哈希更改并发出警报(如果它们不仅仅是“#”),但是如果您更改它会将“#”附加到您的网址,它仍会滚动到顶部。

当您向网址添加空哈希“#”时,如何阻止屏幕显示在页面顶部?

1 个答案:

答案 0 :(得分:2)

    $(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;
             }
        }); 
     })