Javascript 在顶部打开页面,即使URL中有一个向下放置页面的#锚
我有一个疑问:是否可以禁用浏览器对链接的默认操作,例如 我不是说使用Javascript 在顶部打开页面,即使URL中有一个向下放置页面的#锚,javascript,jquery,Javascript,Jquery,我有一个疑问:是否可以禁用浏览器对链接的默认操作,例如 我不是说使用event.preventDefault() 我想做的是: 在页面的开头有TOC,其名称链接(#part-)指向页面的不同部分。我可以使用以下方法轻松禁用每个链接上的单击事件: $("a.namedLink").click(function(event) { event.preventDefault(); //and do whatever I want to, like animated scro
event.preventDefault()
我想做的是:
在页面的开头有TOC,其名称链接(#part-)指向页面的不同部分。我可以使用以下方法轻松禁用每个链接上的单击事件:
$("a.namedLink").click(function(event) {
event.preventDefault();
//and do whatever I want to, like animated scroll then moving the dock-able header using jQuery Affix plugin
});
但是,如果有人复制链接或直接使用URL本身()打开链接,上面的代码将无法工作,因为没有单击任何内容
我已经检查了几个示例,但是,它们都讨论了相同的页面和#单击事件,如Stackoverflow线程和其他线程:
请让我知道我们是否能做到,更重要的是,我们是否应该做到
谢谢您可以使用以下工具滚动到定位点:
$(document).scrollTo("a[name='namedLink']");
如果用户使用散列直接点击页面,还可以在页面加载时检查散列位置:
$(function() {
var hash = window.location.hash.substring(1, window.location.hash.length);
if(hash != "") {
$(document).scrollTo("a[name='"+hash+"']");
}
});
你应该吗?完全由你决定。这就像重新发明轮子,只是为了让它变成红色,尽管不是每个人都喜欢红色
正如所指出的,非常有用的scrollTo()方法实际上是一个插件,而不是内置在jQuery中。可以在这里找到:您可以执行以下操作:
$(function () {
window.scrollTo(0,0);
});
加载页面后,将用户恢复到顶部。但是,这可能意味着页面会跳转两次。可能会将某些内容绑定到页面加载事件并检查哈希的url?如果不想滚动窗口,请从标记中查找并删除
id=“part-123”
。我认为scrollTo
是一个独立的插件,而jQuery没有提供。如果是这样的话,你应该提到这一点。@PavloMykhalov很好,更新的答案反映了这一点。谢谢@Blade0rz,让我尝试一下你所建议的poc,但是,我认为这有点接近我的需要。