Javascript 检测后退/下一步/刷新按钮点击Chrome

Javascript 检测后退/下一步/刷新按钮点击Chrome,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,如何检测Chrome上的后退/下一步/刷新按钮点击 我已经有了一个键盘检测的解决方案,但它不适用于浏览器中的按钮 <script language="javascript" > var validNavigation = false; var numPendencias = 0; function verificaPendencias() { var dont_confirm_leave = 0; //set dont_confirm_leave to 1 when yo

如何检测Chrome上的后退/下一步/刷新按钮点击

我已经有了一个键盘检测的解决方案,但它不适用于浏览器中的按钮

<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();
});    

var validNavigation=错误;
var numPendencias=0;
函数VerificationCapendencias(){
var dont\u confirm\u leave=0;//如果希望用户能够在未经确认的情况下离开,请将dont\u confirm\u leave设置为1
var LEVE_message=“是否存在其他问题,是否存在其他问题?”
功能(e){
如果(!有效航行){
如果(不确认离开!==1){
如果(!e)e=window.event;
//e、 IE支持cancelBubble-这将终止冒泡过程。
e、 取消气泡=真;
e、 returnValue=留言;
//e、 stopPropagation在Firefox中工作。
如果(如停止播放){
e、 停止传播();
e、 预防默认值();
}                    
//Chrome和Safari的回归作品
返回留言;
}
}
}
window.onbeforeunload=再见;
}
函数atribuirEventos(){
jQuery(document).bind('keypress',函数(e){
如果(e.keyCode==116){
有效航行=真;
}
});
jQuery(document).bind('keydown',函数(e){
如果(e.keyCode==116){
有效航行=真;
}
});
jQuery(document).bind('keyup',函数(e){
如果(e.keyCode==116){
有效航行=真;
}
});
jQuery(“a”).bind(“mouseover”,function(){
有效航行=真;
});                
jQuery(“a”).bind(“mouseout”,function(){
有效导航=错误;
});
jQuery(“表单”).bind(“提交”,函数(){
有效航行=真;
});
jQuery(“输入[type=submit]”)。绑定(“单击”,函数(){
有效航行=真;
});
jQuery(“button”).bind(“mouseover”,function(){
有效航行=真;
});                
jQuery(“button”).bind(“mouseout”,function(){
有效导航=错误;
});        
}
jQuery(文档).ready(函数(){
验证卡潘登尼亚斯();
心房前庭();
});    

它是否具有显示此事件的某些属性


更准确地说,我想在用户关闭浏览器或选项卡时生成一个警告,但问题是,通过onbeforeunload,每次他单击链接、按F5或执行任何从页面本身出来的操作时,它都会显示消息,然后我将锁定,但即使如此,当用户单击浏览器按钮时,它也会生成消息,我希望避免使用上面的方法,而只在翻盖关闭或浏览器关闭时才留下消息。

我认为您需要使用类似于:

window.onpopstate = function(event) {
    // do something  
};

您只能处理事件,无法单独检测按钮。我尝试过使用它,但在浏览器中“后退”和“下一步”按钮不再工作。如何触发此事件?-我想你可以在这里找到触发事件的描述,当前事件的名称:“popstate”我试图使用popstate,但在我的浏览器中“后退”和“下一步”按钮不再起作用。