回答
它是可用的HTML5历史API中的所有浏览器。这个事件被称为'popstate'
我们需要迎合所有不支持HTML5的浏览器 –
有很多方法可以检测用户是否点击了后退按钮。但一切都取决于你的需求。尝试探索下面的链接,他们应该帮助你。
检测,如果当前页面上的用户按下 “返回” 按钮:
- Is there a way using Jquery to detect the back button being pressed cross browsers
- detect back button click in browser
检测是否访问过当前页面按以往的 “返回” 按钮后(“前进“)页码:
的如 'popstate' 事件,只有当你之前推东西的作品。所以,你必须做这样的事情:
jQuery(document).ready(function($) {
if (window.history && window.history.pushState) {
window.history.pushState('forward', null, './#forward');
$(window).on('popstate', function() {
alert('Back button was pressed.');
});
}
});
对于浏览器的向后兼容性,我建议:history.js
这不区分后退或前进按钮,只是popstate,这可以是两个 – Richard
您的代码在桌面浏览器中完美运行。但在移动浏览器中它不能正常工作 – Shwet
但警惕背单词和转发两者,我怎么能检测只返回点击 – lalitpatadiya
发现这工作得很好跨浏览器和移动back_button_override.js。
(增加了Safari浏览器5.0定时器)
// managage back button click (and backspace)
var count = 0; // needed for safari
window.onload = function() {
if (typeof history.pushState === "function") {
history.pushState("back", null, null);
window.onpopstate = function() {
history.pushState('back', null, null);
if(count == 1){window.location = 'your url';}
};
}
}
setTimeout(function(){count = 1;},200);
通过以下功能
window.onload = function() {
if (typeof history.pushState === "function") {
history.pushState("jibberish", null, null);
window.onpopstate = function() {
history.pushState('newjibberish', null, null);
// Handle the back (or forward) buttons here
// Will NOT handle refresh, use onbeforeunload for this.
};
}
else {
var ignoreHashChange = true;
window.onhashchange = function() {
if (!ignoreHashChange) {
ignoreHashChange = true;
window.location.hash = Math.random();
// Detect and redirect change here
// Works in older FF and IE9
// * it does mess with your hash symbol (anchor?) pound sign
// delimiter on the end of the URL
}
else {
ignoreHashChange = false;
}
};
}
};
在我的情况下,我使用jQuery在SPA 更新的DIV禁用链接按钮(单次页面[web]应用程序)。
作为$(window).on('hashchange', ..)
事件监听器的新手,这一个事实证明是具有挑战性的,并且花了一些时间进行尝试。由于阅读了很多答案并尝试了不同的变体,最后想出了如何使它按照以下方式工作。据我所知,目前看起来很稳定。
总之 - 每次加载视图时都应该设置变量
globalCurrentHash
。当$(window).on('hashchange', ..)
事件侦听器运行然后,检查以下内容:
- 如果
location.hash
具有相同的值,这意味着继续前进- 如果
location.hash
有不同的值,则意味着回去
我意识到使用全局变量s并不是最优雅的解决方案,但在JS中做事OO对我来说似乎非常棘手。改进/细化的建议肯定赞赏
设置:
- 定义一个全局变量:
var globalCurrentHash = null;
当致电时更新DIV,更新全局变量还有:
function loadMenuSelection(hrefVal) { $('#layout_main').load(nextView); globalCurrentHash = hrefVal; }
就绪页面,设置监听检查全局变量,看是否被按下后退按钮:
$(document).ready(function(){ $(window).on('hashchange', function(){ console.log('location.hash: ' + location.hash); console.log('globalCurrentHash: ' + globalCurrentHash); if (location.hash == globalCurrentHash) { console.log('Going fwd'); } else { console.log('Going Back'); loadMenuSelection(location.hash); } }); });
在HTML5的情况下,这将诀窍
window.onpopstate = function() {
alert("clicked back button");
}; history.pushState({}, '');
- 1. Gmail - 后退按钮点击浏览器
- 2. 点击Ipad浏览器后退按钮
- 3. 当我点击浏览器后退按钮或移动设备后退按钮
- 4. jQuery - 检测点击浏览器后退按钮并提交表格
- 5. 检测浏览器后退按钮按下 - jquery移动
- 6. 隐藏浏览器后退按钮在按钮中点击
- 7. 点击X关闭浏览器和后退或前一个浏览器按钮在jQuery/javascript
- 8. 浏览器后退按钮
- 9. 禁用浏览器后退按钮javascript
- 10. 浏览器后退按钮和javascript
- 11. Jquery .toggle()和浏览器后退按钮
- 12. 点击浏览器后退按钮时显示图片预览
- 13. 使用量角器或javascript的浏览器后退按钮
- 14. 点击浏览器后退按钮后的GridView排序问题
- 15. 使用history.pushState后检测浏览器后退按钮
- 16. 检测点击浏览器
- 17. 点击浏览器后退按钮后,Opera浏览器不会触发JS或服务器端代码(JSP)
- 18. 如何检测任何浏览器后退按钮点击使用Java脚本或jQuery的?
- 19. Javascript/jQuery仅在浏览器后退/前进按钮点击时检测到散列更改
- 20. 单击浏览器后退按钮时无法检索会话
- 21. 点击浏览器后退按钮加载两个iframe
- 22. Asp.Net在浏览器上点击后退按钮时强制Page_Load
- 23. 后退按钮点击事件浏览器
- 24. 在浏览器上触发事件后退按钮点击
- 25. 点击后退按钮时重新加载浏览器页面
- 26. 在浏览器上刷新jsp页面后退按钮点击
- 27. 浏览器后退按钮不适用于ajax Updatepanel点击
- 28. 旧的验证错误点击浏览器后退按钮
- 29. 浏览器后退按钮点击不加载前一页
- 30. 点击浏览器的时候后退按钮
您正在寻找HTML5历史API。 – SLaks
[检测后退按钮在浏览器中单击]的可能重复(http://stackoverflow.com/questions/6359327/detect-back-button-click-in-browser) –