我正在创建一个倾向于在一个页面中处理所有请求的网站(Ajax)。 所以我认为我可以捕获每个用户点击一个链接,并检查 IF 它在我的网站上我做了一些关于 JavaScript 的事情,比如一个ajax请求,例如 ELSE 它会像往常一样打开链接!
在window.location上做手表不起作用!
而且我不知道是否还有#符号之后的url部分。
注意:GMail和Facebook都是我猜的!他们使用这样的东西:
http://mail.google.com/mail/的 #inbox
http://www.facebook.com/home.php #/ inbox /?ref = mb
请考虑:我喜欢在我的项目中使用jQuery,因此使用它的任何解决方案都是首选。
有什么想法吗?
答案 0 :(得分:4)
URL的片段部分用于在启用AJAX的网站上启用导航历史记录(后退和前进按钮)。如果你想“捕获”点击链接,既然你正在使用jQuery,你可以这样做:
$('a').click(function()
{
var item = $(this);
var url = item.attr('href');
// your logic here
});
如果你在AJAX星座中使用片段(window.location.hash),请注意IE6在AJAX请求中提交url的片段部分,这可能导致非常难以调试的bug,所以要注意这一点。
答案 1 :(得分:4)
这是另一个好读:Restoring Conventional Browser Navigation to AJAX Applications
摘自文章:
许多开发人员采用AJAX作为 开发丰富的Web应用程序的方法 这几乎是互动的 响应式桌面应用程序。 AJAX的工作原理是将Web UI划分为 不同的细分。用户可以执行 对一个段进行操作然后 开始研究其他细分市场 没有等待第一个 操作完成。
但是AJAX有一个主要的缺点;它 打破标准的浏览器行为,例如 作为后退,前进和书签 支持。而不是强迫用户 适应AJAX的缺点, 开发人员应该制作他们的AJAX 应用符合 传统的网络互动 风格,.......
答案 2 :(得分:4)
在最近的浏览器窗口上调度了hashchange
事件。
答案 3 :(得分:3)
简单:
if(window.location.hash) {
// Fragment exists
} else {
// Fragment doesn't exist
}
链接: How can you check for a #hash in a URL using JavaScript?
答案 4 :(得分:3)
请参阅@Pekka的How can you check for a #hash in a URL using JavaScript?链接以查看哈希值。只需将该函数放入回调window.setInterval()