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

是否有任何方法可以在不干预HTML代码的情况下使用JavaScript防止这种行为?也许在浏览器跳转到锚点之前触发了某些事件?案例就是通过直接输入打开页面,而不是单击链接后的跳转。

另外,我也在寻找一种完全防止跳跃的方法,而不是让浏览器跳跃然后向后滚动。

最佳答案

我认为您应该遵循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;
});
});

关于javascript - 在打开带有片段标识符的URL时是否防止默认跳转?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27846583/

10-12 03:29