Jquery地址:无法处理传入的深层链接?

时间:2010-12-06 10:49:21

标签: jquery ajax jquery-address

我正在使用这个基于AJAX的插件加载到我的页面上,除了当我尝试捕获其中没有哈希片段的传入链接时,它很好地处理了一切。

地址栏
传入链接 - > hostname.com/path/
用户导航到另一个ajax state-> hostname.com / path / #hash
在这里,我希望插件不要将路径包含在地址栏中,因为哈希代表了这一点。

AJAX GET
传入链接 - > hostname.com/path/
用户导航到另一个ajax state-> hostname.com/path/
实际请求 加载正确的状态。

有没有办法让它不添加地址栏的路径?
例如 主机名/#网络发展
而不是:
主机名/ Web的发展/#Web的发展

点击处理

  

$('a.internalLink')。live('click',function(event){
      event.preventDefault();       clickedLink = $(this);       $ .address.value(clickedLink.attr( 'href' 属性)取代(基, ''));   });

2 个答案:

答案 0 :(得分:0)

您应该捕获被点击的锚标记的事件,并使用event.preventDefault();阻止默认操作

$(document).delegate('a', 'click', function (event) {
    var targetHref = this.href;

    window.location.href = targetHref; // or whatever

    event.preventDefault(); // stop the page changing.
});

您可能还对新添加的HTML 5感兴趣,它们允许操纵浏览器历史记录;即您可以使用AJAX更新页面,但仍然可以更改地址。有关详细信息,请参阅here(Mozilla开发人员中心)。

答案 1 :(得分:0)

我通过将任何未散列的URL重定向到散列等效值来规避问题:

if(!window.location.hash){
  window.location.href = 'http://'+window.location.host+'/#'+window.location.pathname+window.location.search;
};

它不是那么优雅,也许有更好的解决方案,但它有效。