跨浏览器的浏览器后退按钮事件检测
由于其异步性质,检测浏览器后退按钮的行为带来了挑战。虽然存在一些方法,例如利用 window.onhashchange,但它们无法区分触发哈希更改的页内元素和实际的后退按钮按下。
强制使用页内后退按钮
在依赖哈希导航的单页应用程序中,调节后退按钮的功能至关重要。通过使用修改哈希值的页内后退按钮,您可以保持对导航的控制。
发现浏览器后退按钮按下
准确检测浏览器后退按钮事件,考虑使用鼠标悬停并在文档上留下事件的跨平台方法。
document.onmouseover = function() { // User's cursor is within the document area window.innerDocClick = true; } document.onmouseleave = function() { // User's cursor has exited the document area window.innerDocClick = false; } window.onhashchange = function() { if (window.innerDocClick) { // Navigation triggered by in-page action } else { // Browser back button was pressed } }
此方法设置布尔标志(window.innerDocClick) 指示光标是否在文档区域内。如果哈希值发生变化而标志为 false,则建议按下浏览器后退按钮。
防止退格键触发后退事件
防止退格键激活返回按钮,使用以下 jQuery 代码:
$(function(){ var rx = /INPUT|SELECT|TEXTAREA/i; $(document).bind("keydown keypress", function(e){ if( e.which == 8 ){ // 8 == backspace if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){ e.preventDefault(); } } }); });
此代码拦截退格键并防止它们触发返回如果焦点不在输入字段上,则发生按钮事件。
以上是如何可靠地检测不同浏览器之间的浏览器后退按钮按下情况?的详细内容。更多信息请关注PHP中文网其他相关文章!