我注意到a:visited
样式不适用于通过JavaScript请求的链接。在标准用户单击时,完全相同的链接注册为访问,立即和后续刷新。我不确定这对jQuery Mobile(我第一次遇到它)是否是唯一的,或者它是否是我不知道的浏览器限制?
答案 0 :(得分:2)
a:visited
匹配任何指向浏览器历史记录中的网址的链接。
如果您使用AJAX取消对URL的导航,则该URL将永远不会在浏览器历史记录中结束。
您可以使用#
链接修复此问题。
答案 1 :(得分:2)
如果您希望它与历史记录和访问过的链接样式一起使用,您可能需要更改location.hash。
请注意,Did You Watch Porn网站使基于访问链接的浏览历史隐私漏洞受到欢迎后,浏览器之间的访问链接样式有些不一致。
答案 2 :(得分:1)
a:visited
。
指向AJAX调用的链接通常返回'false'(带有散列(<a href="#">link</a>
)的解决方案仍返回false,否则用户将跳转到页面顶部)。
这样,链接永远不会被“执行”,因此不被标记为已访问。
答案 3 :(得分:1)
好的,请不要将a
元素的href
更改为指向其他答案者所说的散列网址 - 这会破坏用户体验。如果他们想要在新窗口中打开,那么它将需要加倍加载,如果你做更改服务器端,它将破坏搜索引擎和js禁用用户。
问题在于,如果您使用哈希将网站升级为RIA(富互联网应用程序),则链接将指向mysite.com/page
,但您实际访问mysite.com/#/page
,因此您实际上并未访问原文。
这里适当的解决方案是使用HTML5 History API,它允许您直接更改URL并挂钩到URL更改(因此不再需要哈希)。你可以在这里阅读更多关于哈希vs hashbangs与HTML5 History API的利弊: https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling - 它还包含使用HTML5历史记录API升级您的网站的示例代码。
jQuery Mobile计划将来用于HTML5历史API(目前正在进行中),但是现在我建议等待它实现。
答案 4 :(得分:0)
您始终可以通过ajax回调在链接上设置一个类,该回调与a:visited共享样式。