ser*_*erg 38 javascript url hash location reload
我试图用不同的url哈希重新加载当前页面,但它不能按预期工作.
(澄清我希望它如何工作:重新加载页面,然后滚动到新的哈希.)
方法#1:
window.location.hash = "#" + newhash;
Run Code Online (Sandbox Code Playgroud)
仅滚动到此锚点而不重新加载页面.
方法#2:
window.location.hash = "#" + newhash;
window.location.reload(true);
Run Code Online (Sandbox Code Playgroud)
有点工作,但它首先滚动到锚点,然后重新加载页面,然后再次滚动到锚点.
方法#3:
window.location.href = window.location.pathname + window.location.search + "&random=" + Math.round(Math.random()*100000) + "#" + newhash;
Run Code Online (Sandbox Code Playgroud)
工作,但我宁愿不添加随机垃圾到网址.
有更好的解决方案吗?
Nic*_*lay 32
删除您要导航到的锚点,然后使用方法#2?由于没有锚点,因此设置哈希值不应滚动页面.
我有一个 JQuery 函数,它会检测到$(document).ready()
在我的情况下是否有附加到 URL 的哈希值,因此我保持该函数相同,然后在检测到哈希值更改时使用强制重新加载:
$(window).on('hashchange',function(){
window.location.reload(true);
});
Run Code Online (Sandbox Code Playgroud)
然后我的另一个功能 -
$(document).ready(function() {
var hash = window.location.hash;
if(hash) {
//DO STUFF I WANT TO DO WITH HASHES
}
});
Run Code Online (Sandbox Code Playgroud)
就我而言,这对于用户体验来说很好,但对其他人来说可能不太好。