tos*_*bre 12 modal-dialog backbone.js twitter-bootstrap
我正在使用Backbone和bootstrap.问题是当你通过应用程序,并在某些时候你打开引导模态窗口并按下后退按钮,模态窗口关闭但模态背景div(模态背景)保持不会消失.它覆盖整个屏幕,你不能点击任何东西.我注意到当你关闭模态时,通常模态背景div从html中删除,在这种情况下它会停留.
我正在网上搜索这个解决方案,并发现了类似的东西,但没有一个是按下浏览器后退按钮的潮流.
我想要捕获浏览器后退按钮事件和用户jquery来删除该div,但这不是真正好的解决方案.
有人能为这个问题指出一些解决方案吗?或者最后告诉我为什么会这样.
编辑:当按下后退按钮时,模态不会抛出hide.bs.modal事件,所以我无法捕获它并删除模态背景div
试试这个。它对我有用。
<script type="application/javascript">
$(window).on('popstate', function() {
$('.modal').modal('hide');
$( ".modal-backdrop" ).remove();
$( ".in" ).remove();
});
</script>
Run Code Online (Sandbox Code Playgroud)
我们在使用AngularJS_v1.4.7和Bootstrap_v3.0开发的Web和移动应用程序中遇到此问题.预期的行为(跨应用程序)是,Popup应该关闭,页面转换不应该发生.换句话说,后退按钮只是关闭弹出窗口而没有其他内容.
以下修复工作正常,
//Detect location change
$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {
// Select open modal(s)
var $openModalSelector = $(".modal.fade.in");
if( ($openModalSelector.data('bs.modal') || {}).isShown == true){
// Close open modal(s)
$openModalSelector.modal("hide");
// Prevent page transition
event.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
此修复程序已成功测试,
您可以监听 HTML5popstate事件,然后hide.bs.modal在发现显示模态背景时触发该事件。
$(window).on('popstate', function() {
alert('Back button was pressed.');
});
Run Code Online (Sandbox Code Playgroud)
或者使用History.js工具及其事件来捕获后退按钮事件,然后执行与之前的解决方案相同的操作。
| 归档时间: |
|
| 查看次数: |
5882 次 |
| 最近记录: |