基本上,当我点击我的主页的链接,我想用一些JavaScript到一个新的div下滑并更改网址,这样,如果该URL被输入,它会带来正确的信息。点击链接时,我不希望整个页面加载。从链接冲浪到链接时,我想让网页动画更改,而不是加载新页面。如何在不重新加载浏览器的情况下更改我的Url?
回答
你可以这样做:
window.location.hash = "id of the element to be scrolled to";
您可以使用此代码,我从css-tricks
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
以上采取的措施将自动做的工作适合你。
如果你要使用“旧”的浏览器,然后window.location.hash是你唯一的选择,而这无法操纵整个URL,仅操纵例如#about到底。
如果这里描述是愿意放弃旧的浏览器,那么你可以去window.history.pushState:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
下面是浏览器兼容pushState的概述:http://caniuse.com/#search=pushstate
有更多的信息这个线程:How can I change the page URL without refreshing the page?
有实现这一目标的3种方式:
在你的锚使用普通的JavaScript(DEFINITELY不推荐)
通过这样做,我的意思是字面上做:
<a href="javascript:goToHome()">Home page</a>
你能做到这一点,但这意味着你会被污染与全局变量和函数,这是严格不建议在全球范围内。
在所有的锚使用“#” 这是做的最常见和最安全的方式,因为在几乎所有主要的浏览器可用,并且他们的不同版本
<a href="#/home/">Home page</a>
的意图哈希将直接带您访问当前正在阅读的文档中的一个部分,该部分由HTML中的id
属性定义,该属性用于非常大的HTML文档。随着哈希和window.onhashchange
事件,你可以得到你想要的东西,除了一些旧版本的IE 其中我认为是及以下。
window.addEventListener('hashchange', function(event) {
//your navigation logic here
});
更多hashchange
:onhashchange event
使用window.history
API 这是实现它的最新方法,因为这是相当新的并不是所有的浏览器都支持它,但它是一个很好的办法做到这一点:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
其中:
stateObj:是可以在历史状态之间传递的对象。
标题:只是一个新的国家的标题。
网址:新的URL显示在地址栏中。
此函数调用将触发浏览器上的window.onpopstate
事件。
更多关于历史API:HTML5 History API
希望这可以帮助你。
你可能想看看ember.js。这是一个完全符合你的要求的框架(如果我正确理解你的话),它会为你处理所有的历史。有一个关于代码学校的有用教程,可以帮助您了解如何构建简单的引导程序站点:https://www.codeschool.com/courses/warming-up-with-emberjs
- 1. 在不重新加载页面的情况下更新浏览器的网址
- 2. 在不重新加载页面的情况下更改URL
- 3. 在没有页面重新加载的情况下更改浏览器URI
- 4. 如何在不更改浏览器历史记录的情况下更改url
- 5. GitHub如何在不重新加载页面的情况下更改URL?
- 6. 如何在不重新加载ASP.net页面的情况下更改URL?
- 7. 如何强制浏览器重新加载缓存的URL而不更改URL
- 8. 在不重新加载网页的情况下更改标题
- 9. 如何在不重新加载当前页面的情况下加载URL?
- 10. 如何在不重新加载网页的情况下更改div的内容?
- 11. Gulp.js浏览器同步不重新加载我的浏览器
- 12. 如何在不重新加载页面的情况下更改网址?
- 13. 如何在不重新加载页面的情况下更改网址?
- 14. 如何在不创建页面重新加载的情况下更改Firefox window.location.hash?
- 15. 如何在不重新加载页面的情况下更改php include?
- 16. 如何在不重新加载的情况下动态加载我的页面?
- 17. 如何在不更改URL的情况下重定向页面?
- 18. 如何在不刷新页面的情况下更改URL?
- 19. 如何在不提供URL的情况下重新加载负载()
- 20. 如何在不重新加载MapView的情况下重新加载MKAnnotations?
- 21. Threejs - 如何在不崩溃浏览器的情况下加载大型模型
- 22. 在不打开浏览器窗口的情况下调用URL
- 23. 如何在不重置篡改密码的情况下重新加载页面?
- 24. 在不加载新页面的情况下更改网址
- 25. 如何在不下载的情况下在浏览器中显示图像?
- 26. 如何在不重新加载视图的情况下更新参数?
- 27. 如何在不重新加载模板的情况下更新集合?
- 28. 如何在不加载orm的情况下更新记录?
- 29. 如何在不加载ActiveRecord对象的情况下更新列
- 30. 在不重新启动xterm的情况下重新加载.Xresources