【问题标题】:Detect Back/Next/Refresh BUTTON click on Chrome检测返回/下一步/刷新按钮单击 Chrome
【发布时间】: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


【解决方案1】:

我认为你需要使用类似的东西:

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

【讨论】:

  • 如何触发这个事件?
  • stackoverflow.com/questions/2490825/… - 我想你可以在这里找到触发事件的描述,当前事件的名称:“popstate”
  • 我尝试使用 popstate,但在我的浏览器中,后退和下一步按钮不再起作用。
猜你喜欢
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 2023-03-26
  • 2015-03-08
  • 1970-01-01
相关资源
最近更新 更多