【发布时间】:2014-08-28 03:50:21
【问题描述】:
如何检测 Chrome 上的 Back/Next/Refresh BUTTON 点击?
我已经有一个键盘检测解决方案,但它不适用于浏览器中的按钮。
<script language="javascript" >
var validNavigation = false;
var numPendencias = 0;
function verificaPendencias() {
var dont_confirm_leave = 0; //set dont_confirm_leave to 1 when you want the user to be able to leave withou confirmation
var leave_message = 'Existem pendências ativas, deseja mesmo sair?'
function goodbye(e) {
if (!validNavigation) {
if (dont_confirm_leave!==1) {
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = leave_message;
//e.stopPropagation works in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
//return works for Chrome and Safari
return leave_message;
}
}
}
window.onbeforeunload=goodbye;
}
function atribuirEventos() {
jQuery(document).bind('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
jQuery(document).bind('keydown', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
jQuery(document).bind('keyup', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
jQuery("a").bind("mouseover", function() {
validNavigation = true;
});
jQuery("a").bind("mouseout", function() {
validNavigation = false;
});
jQuery("form").bind("submit", function() {
validNavigation = true;
});
jQuery("input[type=submit]").bind("click", function() {
validNavigation = true;
});
jQuery("button").bind("mouseover", function() {
validNavigation = true;
});
jQuery("button").bind("mouseout", function() {
validNavigation = false;
});
}
jQuery(document).ready(function() {
verificaPendencias();
atribuirEventos();
});
它是否有一些显示此事件的属性?
更准确地说,我想在用户关闭浏览器或选项卡时生成一个警告,但问题是通过 onbeforeunload,每次他点击一个链接,按 F5 或执行任何出现的操作页面本身它显示了消息,然后我把锁起来了,但即使这样当用户点击浏览器的按钮时它会生成消息,我想避免使用上面的方法,只有在襟翼关闭时才留下消息或浏览器。
【问题讨论】:
-
只能使用
popstate事件,不能单独检测按钮。 -
我尝试使用它,但在我的浏览器中,后退和下一步按钮不再起作用。
标签: javascript jquery google-chrome