如何使用HTML5的历史/状态API,并保持与标签(文档中的链接)完整的超链接



我在现有网页中实现了ajax -html5.js。它使用jQuery、ScrollTo和History.js。好东西,效果很好。每个像

这样的链接
<a href="category?id=5">Category 5</a>

在内容窗口中打开,就像它应该的那样。当我点击一个使用碎片标识符的链接时,整个事情离完美只有一个问题:

<a href="category?id=5#pictures">Category 5 - directly to pics</a>

…地址栏内的URL会像它应该的那样改变,但内容不会发生任何变化。甚至连类别都没有?Id =5被加载

据我所知,这被触发(从ajax -html5.js):

History.pushState(null,title,url);     // url = "category?id=5#pictures"

但是statechange没有(来自同一个文件):

$window.bind('statechange',function(){

我想我可以消毒每个url(删除#hashtag),然后一切都会工作…当然,除了获得新加载的页面定位在<a name="hashtag"></a>的位置。不幸的是,网站严重依赖这些…

我的问题是:甚至可以使用ajax和碎片标识符一起使用,后者不受第一个影响?

您可以存储所有<带有内部href的标签,像这样:>
var tags = jQuery("a[href*='#']");

在afaxify-html5.js完成它的魔力之后,你可以通过调用tags.unbind()来恢复原来的行为。

最新更新