无法在某些设备上停用浏览器后退按钮

时间:2016-05-17 05:25:18

标签: javascript jquery ruby-on-rails-4 browser-history

我正在开发一个应用程序,我希望用户在不单击后退按钮的情况下继续。我想阻止他们返回并再次执行相同的任务,如果他们点击后退按钮然后显示带有bootstrap模式的弹出消息。

这是我的代码段。

function showPopup(url, valid_device) {
  if (window.history && window.history.pushState) {
    $(window).on('popstate', function() {
      $('#bckBtnModal').modal('show');
    });

    $(window).on('DOMContentLoaded', function() {
      $('#bckBtnModal').modal('show');
    });
  }
}

function moveForward(url){
  window.history.pushState( 'forward', null, url );
  history.forward()
}

function checkState(url, valid_device){
  if (window.history && window.history.pushState) {
    window.history.pushState({},'forward', null, url);
    $(window).on('popstate', function() {
      $('#bckBtnModal').modal('show');  
  });
  $(window).on('DOMContentLoaded', function() {
    if(valid_device && show_on_dom_event && push_state_enable){
      $('#bckBtnModal').modal('show');
    }
  });
 }
}

我使用了以下功能,如下所示:

window.onpageshow = BackBtnHandler.showPopup('/reservations/guest_party_details', '<%= valid_device?%>')
window.onnavigate = BackBtnHandler.moveForward('/reservations/guest_party_details');

但它不是全局解决方案,我在OSx chrome浏览器上发现,当页面加载了两个调用的函数时,因为它触发了两个事件popstateDOMContentLoaded而其他大多数浏览器调用{{} 1}}或popstate

我也尝试过history.js,但没有从中获得任何有用的东西。

任何人都有适用于所有主流浏览器和所有主要操作系统的全球解决方案吗?

0 个答案:

没有答案