Jon*_*ney 26 javascript back-button deep-linking browser-history
使用JavaScript,有没有办法更新window.location.hash而无需滚动网页?
我有可点击的标题元素,可以直接在它们下方切换div的可见性.单击标题但我不希望页面滚动时,我想要历史记录中的/ foo #bar.因此,当离开/ foo #bar导航时,我将能够使用后退按钮,并且在返回时可以看到其ID在window.location.hash中的div.
这种行为可能吗?
Luc*_*lin 37
要在不重新加载/滚动页面的情况下更改哈希,您现在只需使用html5即可history.pushState.
history.pushState(null,null,'#hashexample');
Run Code Online (Sandbox Code Playgroud)
它受到所有主流浏览器的支持:
MDN:
另请注意我们在这里使用的最后一个url参数,它可以是任何url,因此它不仅限于哈希.
小智 30
尽可能容易
var scrollmem = $('html,body').scrollTop();
window.location.hash = hash;
$('html,body').scrollTop(scrollmem);
Run Code Online (Sandbox Code Playgroud)
Sun*_*nny 22
您可以尝试的另一件事是更改哈希指向临时的元素的id.为我工作!
function changeHashWithoutScrolling(hash) {
var id = hash.replace(/^.*#/, ''),
elem = document.getElementById(id)
elem.id = id+'-tmp'
window.location.hash = hash
elem.id = id
}
Run Code Online (Sandbox Code Playgroud)
这种行为是很有可能的。您应该研究一些为提供此功能而开发的库。
非常简单的历史: http: //code.google.com/p/reallysimplehistory/ SWFAddress:http://www.asual.com/swfaddress/
| 归档时间: |
|
| 查看次数: |
26203 次 |
| 最近记录: |