我通过Bootstrap模式隐藏了iframe
,其中包含Google表单网址。
<div class="modal fade" id="sugestaoPL" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">My Modal Title</h4>
</div>
<div class="modal-body">
<iframe src="<?php echo ot_get_option('iframe_url'); ?>"></iframe>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
每当我尝试离开或重新加载页面时,浏览器都会告诉我默认“您确定要离开此页面,未保存的更改会丢失”消息,可能是因为我要离开带有Google表单的页面不变。
由于在大多数用例中我的用户不会让模态可见,因此不会使用Google表单,我想禁用此默认邮件。我知道该消息来自Google表单,因为如果删除模式代码,浏览器消息就会消失。
我发现删除此默认行为的解决方案是添加
window.onbeforeunload = null
在我的代码中。我做了什么。我在$(document).ready(){}
之内,在它之外,在关闭</body>
标记之前的头部和页脚中尝试过,并且没有任何替代方法阻止此对话出现。
我担心这是因为它在iframe
内。
如何消除此默认对话?
答案 0 :(得分:1)
不幸的是,我无法解决主要问题,但我找到了解决方法。正如here所指出的那样,这似乎是Google的一个问题。但是链接中指出的解决方法对我来说并不起作用。
这是可行的解决方法
jQuery(window).bind('beforeunload', function(){
if(jQuery('.modal').is(':visible') === false){
jQuery( ".modal" ).remove();
}
});
它的作用是,如果我试图离开页面时没有打开模态,则在页面加载之前从页面中删除.modal
元素。通过这种方式,iframe
也会被移除,并且&#34;您确定要离开此页面&#34;离开了。
答案 1 :(得分:0)
location.href = "javascript:(" + function() {
window.onbeforeunload = null;
window.onunload = null;
} + ")()";
看一下这个帖子 reference
答案 2 :(得分:0)
如果你设置window.onbeforeunload = someFunction;你可以用window.onbeforeunload = null来取消它。
但是,如果设置window.addEventListener('beforeunload',someFunction);,则无法使用window.onbeforeunload = null删除此事件侦听器。 它只能用 removeEventListener( 'beforeunload',someFunction);