我通常在某些链接中使用#
中的<a>
来使用ajax导航
<a href="#page2">Page 2</a>
会将网址更改为www.example.com/#page2
我找到了一种方法来删除#
并使用www.example.com/page2
将其更改为history.pushState()
,但是如何从锚标记中删除#
仍然可以ajax正常工作。即我想制作<a href="page2">Page 2</a>
这就是facebook如何实现ajax我猜...
答案 0 :(得分:1)
pushState()是浏览器的一项新功能,可让您在不更改网址的情况下更改网址。对于旧版浏览器,你需要使用hash /#/ page或/#!/ page(twitter)或/ #page
如果您希望您的网址看起来像您有几个选项。
您可以使用以下内容阻止链接发生:
$('a').click(function(e) {
history.pushState(...);
e.preventDefault(); // stops the link from happening
});
或者只是使用Regex剥离链接HREF的#out并用那个更新pushstate ..
要将新功能与哈希回退一起使用,您应该查看history.js
祝你好运!答案 1 :(得分:0)
具有HREF属性的A元素是一个链接,用于在其他地方导航。具有NAME属性的A元素是锚点,旨在成为链接的目标。如果它具有两个属性,则它是一个锚和一个链接。
如果您正在使用元素来更改页面内容(无论您使用的是AJAX还是其他任何方法都不相关),那么您根本不需要A元素,您可以将任何元素与onclick侦听器一起使用,只需更改内容。更改网址没有问题。如果您希望它看起来像一个链接,那么使用CSS来设置跨度的样式,使其看起来像一个链接(或其他)。
用户期望链接(以及看起来像链接的东西)将它们带到另一个页面。他们希望看起来像按钮的东西几乎可以做任何事情,包括在其他地方导航,所以你的“链接”可能看起来像按钮。
如果你坚持使用A元素,那么在href中使用真实的URL并让执行AJAX(或页面修改)的onclick侦听器返回 false 。这样就不会遵循链接,并且地址栏中的URL也不会改变。
当然,我可能误解了“AJAX导航”的含义,这对我来说是一个含糊不清的术语。