Jquery/javascript检测和捕获页面刷新事件?

Jquery/javascript检测和捕获页面刷新事件?,javascript,jquery,ajax,refresh,Javascript,Jquery,Ajax,Refresh,我有一个AJAXed页面,但我也向用户提供了一个查询字符串,这样他/她可以在url中键入查询字符串,以便再次查看同一页面。(想想谷歌地图及其“共享链接”功能) 当AJAX请求发生时,我更新呈现给用户的查询字符串,但实际URL不变。问题是,如果用户刷新页面,那么从AJAX创建的所有DOM元素都会消失 我想做的是让javascript捕获刷新事件,而不是刷新页面,将用户重定向到页面和查询字符串 如果查询字符串是:?data=blah&stuff=bleh 然后,如果不将页面刷新回www.exampl

我有一个AJAXed页面,但我也向用户提供了一个查询字符串,这样他/她可以在url中键入查询字符串,以便再次查看同一页面。(想想谷歌地图及其“共享链接”功能)

当AJAX请求发生时,我更新呈现给用户的查询字符串,但实际URL不变。问题是,如果用户刷新页面,那么从AJAX创建的所有DOM元素都会消失

我想做的是让javascript捕获刷新事件,而不是刷新页面,将用户重定向到页面和查询字符串

如果查询字符串是:
?data=blah&stuff=bleh


然后,如果不将页面刷新回
www.example.com
,刷新会导致用户进入
www.example.com/?data=blah&stuff=bleh
,如果浏览器没有实际离开页面并获取新页面,则无法更改查询字符串(这有点扼杀了AJAX的作用)

不过,您可以转到如下哈希:
www.example.com/#data=blah&stuff=bleh

在脚本中,只需设置
窗口.location.hash
,例如:

window.location.hash = "data=blah$stuff=bleh";

加载页面时,您需要实际使用哈希……例如:使用它作为数据参数来执行与您之前进行的相同的AJAX调用。

我实际上在考虑在页面刷新时将页面重定向到查询字符串url,但在其他情况下保持url不变。不过,您的技术可能是更好的解决方案,我会尝试一下!我试过了,效果非常好。然而,我才意识到一个问题。由于散列用于页面导航,因此在位置栏中输入散列url实际上不会导致页面刷新。当javascript检测到这种变化时,有没有办法强制刷新?@Razor-我很好奇……如果你想刷新页面,为什么要使用AJAX?@Nick,没有,我不想在AJAX请求发生时刷新页面。我的意思是这个。当AJAX请求发生时,页面不会刷新,然后将url更改为www.example.com/#data=blah。这部分功能非常好。\n现在假设您的朋友给您发送了一个链接“www.example.com/#data=bloh”。然后你把它放进你的url栏,然后按enter键。如果您已经在www.example.com上,您的页面实际上不会转到您朋友的页面,而是停留在您以前所在的页面上,因为哈希不会导致页面刷新。@Razor-啊,在这种情况下,是的,有一个
onhashchange
事件……但不支持跨浏览器。但是…有一个插件可以使它正常化,因此它可以在任何地方工作: