关闭后退按钮弹出

我想点击手机后退按钮关闭弹出窗口。 我使用onhashchange实现了这个:

window.onhashchange = function (event) { }; 

在这种情况下,如果弹出多次打开然后单击后退按钮,则会打开并关闭模式弹出窗口。 但是,我希望模式弹出窗口在第一个背面关闭并导航到下一个返回的prev页面。

我也尝试使用onbeforeunload,但它会显示另一个警告离开或停留在页面上。

 $(window).bind('beforeunload', function(e) { return false; }); 

关闭后退按钮弹出窗口并在下一页上重定向到prev页面的最佳方法是什么?

当我测试我的答案时,bootply.com失败了。 请参阅下面代码底部的内联脚本和注释。 其余的只是Twitter Bootstrap样板,以便我可以在本地轻松测试它。

       modal.html        

If you press the back button now, you should return to whatever page you were on before this page.

 if (window.history && window.history.pushState) { $('#myModal').on('show.bs.modal', function (e) { window.history.pushState('forward', null, './#modal'); }); $(window).on('popstate', function () { $('#myModal').modal('hide'); }); } 

根据http://www.mylearning.in/2015/06/close-modal-pop-up-on-back-button.html

  $('#myModal').on('show.bs.modal', function(e) { window.location.hash = "modal"; }); $(window).on('hashchange', function (event) { if(window.location.hash != "#modal") { $('#myModal').modal('hide'); } }); 

这可以使用Apache Cordova轻松完成,但不确定您是否使用它在webview中显示您的页面。

 function onBackKeyDown(e) { e.preventDefault(); } document.addEventListener("backbutton", onBackKeyDown, false); 

http://cordova.apache.org/docs/en/2.4.0/cordova_events_events.md.html#backbutton

通过单击返回,自动$(’。modal’)。hide()函数被激活。 所以不需要隐藏模态。 我们可以在后退按钮后看到灰色阴影背景。您可以使用这些代码行中的任何一个来关闭模式弹出窗口。

  1. $(’。modal’)。modal(’hide’)。data(’bs.modal’,null); [关于bootstrap 3的工作]

要么

  1. $( ‘主体’)removeClass( ‘模式开’)。

    $(“模式,背景”)删除();

在模态处于活动状态时检查页面,您可以看到这些类。 如果这种方法错误或存在其他简单方法,请纠正我。

我会这样做的:

 // 2.0 and above @Override public void onBackPressed(evt) { evt.preventDefault(); closeTab(); } // Before 2.0 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { evt.preventDefault(); closeTab(); return true; } return super.onKeyDown(keyCode, event); } 

– >这些是btw的处理程序,需要addEventListener =)

我已经通过内存完成了它,我会在以后的’code mess’文件夹中找到它时检查它