jQuery $ .address()插件:hashbang链接与HTML5状态支持冲突

|| 这是描述问题的方案: 用户A具有支持HTML5状态的浏览器,并将此链接发送给用户B:
http://domain.tld/node
使用不支持HTML 5状态支持的浏览器的用户B导航到另一个节点,并将链接发送回用户A:
http://domain.tld/node#!/another-node
但是,当用户A单击链接时,将显示ѭ2content的内容,而不是
/another-node
。 查询Asual \的jQuery
$.address()
插件显示它正在将\“ hashbang address \”解释为哈希值:
> $.address.value()
  \"/node#/another-node\"
> $.address.path()
  \"/node\"
> $.address.hash()
  \"/another-node\"
(奇怪的是,“!”已从哈希爆炸中删除。) 更改我的实现方式可以克服这种歧义吗? 如果在URI中发现了hashbang,我可以禁用对历史API的支持,但我宁愿没有。     
已邀请:
我可以通过稍微更改实现来解决此问题。 基本上,我根据浏览器的功能来确定该地址应该是什么,并对照实际的地址进行检查,如果不匹配,请使用ѭ6替换该地址,而无需创建新的历史记录条目。
var addressValue = $.address.value(),
    initPath = window.location.pathname.replace(stateBasePath, \"\"),
    newLocation = baseUrl +stateBasePath + (supports_history_api() ? \"\" : \"/#!\") + (addressValue != \"/\" ? addressValue : initPath + window.location.search);
if (newLocation != window.location.href) {
    window.location.replace(newLocation);
}
此代码应在DOM ready函数之外尽快执行。
stateBasePath
等同于you9ѭ所使用的值(如果站点位于文档根目录,则为空字符串) “ 10”是URI协议和域,例如
http://domain.tld
(不带斜线)
supports_history_api()
是马克·皮尔格里姆(Mark Pilgrim)的小事     

要回复问题请先登录注册