2013-12-13 37 views
2

我想检测hashchanges,如果散列是空的,请阻止它滚动到屏幕的顶部。使用Javascript,防止滚动空URL哈希变化

这是我有:

// 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); 
}); 

它放入您的控制台,你可以看到它正确地检测哈希值发生变化,并提醒,如果他们不只是“#”,但如果你改变它追加“ #“到你的网址,它仍然滚动到顶部。

当您向您的网址添加空的散列“#”时,如何防止屏幕进入页面顶部?

+0

最后那句话是没有意义的我:( – Phil

+0

如果添加#你的URL的末尾,它发送你回到屏幕的顶部,我该如何预防呢? –

回答

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; 
      } 
     }); 
    }) 
+0

我的哈希值发生变化AREN不是点击触发,而是发生在各种不同的地方,我想跟踪hashchange。 –

+0

好的,我想我很难理解这个问题,也许最好关注为什么哈希是手动添加或其他原因添加到URL的末尾,并在那里解决问题,而不是尝试修补不应该发生的事情。 –

+0

您绝对正确。感谢您的帮助! –