我正在制作一个简单的在线申请。我有一个带有几个按钮和一个“div”的导航栏,所有新内容都将被动态加载到其中,即当我单击“关于”时,它会将页面部分加载到“div”中,而无需重新加载整个页面。加载()函数。问题是:如果我需要给我网站的文档部分的链接,或者用户想要存储这种链接,浏览我的网站时不会重写 url。当用户存储默认链接时,它将始终将他链接到默认的“主页”部分。
如何重写 URL,最正确的方法是什么?
我正在制作一个简单的在线申请。我有一个带有几个按钮和一个“div”的导航栏,所有新内容都将被动态加载到其中,即当我单击“关于”时,它会将页面部分加载到“div”中,而无需重新加载整个页面。加载()函数。问题是:如果我需要给我网站的文档部分的链接,或者用户想要存储这种链接,浏览我的网站时不会重写 url。当用户存储默认链接时,它将始终将他链接到默认的“主页”部分。
如何重写 URL,最正确的方法是什么?
据我说,适当的方法是更新 URL 的哈希值。例如 example.com/#About 等。人们可以为这些添加书签。当您读取 URL 中的哈希标记并加载相应页面时,您必须小心进行 AJAX 调用。
我要做的是对hashchange事件而不是单击进行 ajax 调用。从 IE8 到所有现代浏览器都支持此事件。如果你想支持 IE7,请使用 Ben Alman 的hashchange 插件。
作为选项,您可以使用location.hash
.
例如,用户点击<a href="#about">About</a>
,您正在加载“关于”页面的内容。浏览器地址栏中的 URL 也将更改为http://mysite.com/hello.jsp#about
.
所以现在用户可以复制这个 URL 并访问它。
然后在$(document).ready()
你可以检查location.hash
,找到其中的'#about'
锚点,然后加载适当的内容。
另一种选择是使用Backbone.js或您喜欢的任何其他 JavaScript MVC 框架,这将帮助您构建富客户端应用程序并为您处理这些事情。