打开带有片段标识符的URL时,防止默认跳转?

时间:2015-01-08 17:58:54

标签: javascript hash anchor

假设有一个类似http://www.example.com/blahblah/#fragment的网页。通过直接输入地址栏,浏览器会加载页面并自动跳转到#fragment锚点。

有没有办法在没有干预HTML代码的情况下使用JavaScript来阻止这种行为?也许在浏览器跳转到锚点之前会发生一些事件?一个典型的例子是通过直接输入打开页面,点击链接后没有跳转

此外,我还想找到一种方法防止跳跃,不要让浏览器跳转然后向后滚动。

1 个答案:

答案 0 :(得分:0)

我认为你应该关注Modifying document.location.hash without page scrolling

对于简单的解决方案,你需要做一些技巧 - 在哈希前面添加一些文本,这样它就不再引用现有元素了!

您可以从下面的代码段中找到可能的提示,该提示是从上述链接中的一个回复中复制的。

$(function(){
//This emulates a click on the correct button on page load
if(document.location.hash){
 $("#buttons li a").removeClass('selected');
 s=$(document.location.hash.replace("btn_","")).addClass('selected').attr("href").replace("javascript:","");
 eval(s);
}

//Click a button to change the hash
$("#buttons li a").click(function(){
        $("#buttons li a").removeClass('selected');
        $(this).addClass('selected');
        document.location.hash="btn_"+$(this).attr("id")
        //return false;
});
});