我正在使用这个基于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' 属性)取代(基, '')); });
答案 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; };
它不是那么优雅,也许有更好的解决方案,但它有效。