0

我在我的页面上使用这个插件和基于 AJAX 的加载,老实说,它可以很好地处理所有事情,除非我尝试捕获其中没有哈希片段的传入链接。

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

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

有没有办法让它不添加地址栏的路径?
例如
hostname/#web-development
而不是:
hostname/web-development/#web-development

点击处理

$('a.internalLink').live('click', function(event) {
event.preventDefault(); clickedLink = $(this); $.address.value(clickedLink.attr('href').replace(根据,'')); });

4

2 回答 2

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 来更新页面,但仍要更改地址。有关更多详细信息,请参见此处(Mozilla 开发人员中心)。

于 2010-12-06T11:18:34.287 回答
0

我通过将任何未散列的 URLS 重定向到散列等效项来规避该问题,如下所示:

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

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

于 2010-12-08T08:26:51.970 回答