一个更好的解决方案,可以在所有浏览器和平台上抓住浏览器的后退按钮
A better solution to catch the back button of browser across all browser and platform
我想在页面发生任何事情之前抓住浏览器返回按钮。我已经研究了很多解决方案,有些在上一页完全加载时捕捉到这个事件,我不需要。我需要在任何事情发生之前抓住它。我找到了另一个好的解决方案,
$(window).on('popstate', function() {
var hashLocation = location.hash;
var hashSplit = hashLocation.split("#!/");
var hashName = hashSplit[1];
if (hashName !== '') {
var hash = window.location.hash;
if (hash === '') {
alert('Back button was pressed.');
}
}
});
window.history.pushState('forward', null, '#b');
}
非常有效的解决方案,这个catch-back按钮事件甚至在页面发生任何事情之前,但这个用我的URL写#b,这是不可接受的。
需要帮助,以便在页面发生任何事情之前捕获任何浏览器返回按钮
事实上,我的完整故事是,当按下back时,我在cookie中存储一个变量。很快脚本第一次点击页面加载,我检查cookie,然后重新加载整个页面。因此,服务器端是调用生成的,而不是缓存。有其他解决方案吗?
我一直在寻找一个解决方案,但还没有找到有效的解决方案。提前谢谢。
终于找到了我想要的解决方案。我需要处理后退按钮,因为我不想从缓存加载页面。我无法停止缓存,因为我希望浏览器缓存CSS和jquery,但不缓存html。到目前为止,我认为停止只缓存HTML是不可能的
所以我找到了一个解决方案,我在服务器端添加了一个cookie RequestedFrmServer
。每次我在服务器上的代码被命中时(或者当生成服务器端请求时),都将其设置为1,很快我的客户端脚本被命中,我只将其设置回0。我放置了一个条件,如果值为0,则重新加载整个页面
这是代码。
var _historyBack = $.cookie('RequestedFrmServer');
if (_historyBack != undefined && _historyBack == "1")
{
setCookie("RequestedFrmServer", "0");
}
else if(_historyBack != undefined && _historyBack == "0")
{
window.location.reload(true);
}
在我的案例中起了作用。如果为你工作,我应该受到表扬
相关文章:
- 在浏览器和节点中使用mocha.js的区别
- 编写在浏览器和node.js中运行的模块化ECMAScript
- qoxdoo中的离线存储是否与所有浏览器和本地文件系统兼容
- 适用于可在网络浏览器和智能手机上运行的网站的 MP3 播放器
- javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行
- 是否有跨浏览器和跨框架的方法来检查对象是否是HTML元素
- 浏览器和大量的图像文件处理
- 将所有访问过的网站颜色重置为所有最新浏览器和所有doctype(xhtml,html,html5)的默认颜色css设置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何查看用户正在使用的浏览器(和版本)
- 双击发布商:指定浏览器和广告尺寸
- 虽然浏览器和操作系统上的编译程序之间的真正区别
- 模拟浏览器和服务器之间的不同时区以进行本地测试
- window.onbeforeunload,关闭浏览器和同步AJAX
- 如何在所有浏览器和设备上将某些元素居中
- 有效的网页显示在WebKit浏览器和IE中,但不显示在Firefox中
- 什么是在javascript中检测操作系统,浏览器和版本号的广泛解决方案
- OnClick事件在谷歌浏览器和野生动物园中不起作用
- 删除谷歌浏览器和IE浏览器中文本区域中的选定文本
- RequireJS:如何处理浏览器和服务器之间共享的代码的不同模块依赖关系