我想将iframe加载到bootstrap模式中,并在加载iframe之前显示加载器。我正在使用一个简单的jquery点击功能,但它无法正常工作。我不明白为什么它不起作用。 fiddle整页fiddle
$('.btn').click(function() {
$('.modal').on('show',function() {
$(this).find('iframe').attr('src','http://www.google.com')
})
$('.modal').modal({show:true})
$('iframe').load(function() {
$('.loading').hide();
});
})
答案 0 :(得分:21)
$('.modal').on('shown.bs.modal',function(){ //correct here use 'shown.bs.modal' event which comes in bootstrap3
$(this).find('iframe').attr('src','http://www.google.com')
})
如上所示,使用引导程序3中的'shown.bs.modal'
事件。
编辑: -
并且只是尝试从google以外的iframe打开其他网址,但由于某些安全威胁,它不允许您打开google.com。
原因是,Google正在发送一个" X-Frame-Options:SAMEORIGIN"响应标题。此选项可防止浏览器显示未与父页面托管在同一域中的iFrame。
答案 1 :(得分:4)
在Bootstrap 3中更改了模态加载的Bootstrap事件
只需使用shown.bs.modal
事件:
$('.modal').on('shown.bs.modal', function() {
$(this).find('iframe').attr('src','http://www.google.com')
})
在以下链接中可以找到更多关于此事件的信息:
答案 2 :(得分:3)
您只需使用this bootstrap helper to dialogs (仅5 kB)
即可它支持ajax请求,iframe,常用对话框,确认并提示!
您可以将其用作:
eModal.iframe('http://someUrl.com', 'This is a tile for iframe', callbackIfNeeded);
eModal.alert('The message', 'This title');
eModal.ajax('/mypage.html', 'This is a ajax', callbackIfNeeded);
eModal.confirm('the question', 'The title', theMandatoryCallback);
eModal.prompt('Form question', 'This is a ajax', theMandatoryCallback);
这会在加载iframe时提供加载进度!
不需要HTML。
您可以使用对象文字作为额外选项的参数。
查看网站表格更多详情。
最好的,
答案 3 :(得分:1)
我在Codepen遇到了这个implementation。我希望你觉得它很有帮助。
this.on('hidden.bs.modal', function(){
$(this).find('iframe').html("").attr("src", "");
});
答案 4 :(得分:0)
好像是你的
$(".modal").on('shown.bs.modal') // One way Or
您可以采用稍微不同的方式执行此操作,例如
$('.btn').click(function(){
// Send the src on click of button to the iframe. Which will make it load.
$(".openifrmahere").find('iframe').attr("src","http://www.hf-dev.info");
$('.modal').modal({show:true});
// Hide the loading message
$(".openifrmahere").find('iframe').load(function() {
$('.loading').hide();
});
})
答案 5 :(得分:0)
我还想在模式窗口中加载所有iframe。我所做的是,在Modal内创建了一个iframe,并将目标iframe的源传递到该模态内的iframe。
function closeModal() {
$('#modalwindow').hide();
var modalWindow = document.getElementById('iframeModalWindow');
modalWindow.src = "";
}
.modal {
z-index: 3;
display: none;
padding-top: 5%;
padding-left: 5%;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(51, 34, 34);
background-color: rgba(0, 0, 0, 0.4)
}
<!-- Modal Window -->
<div id="modalwindow" class="modal">
<div class="modal-header">
<button type="button" style="margin-left:80%" class="close" onclick=closeModal()>×</button>
</div>
<iframe id="iframeModalWindow" height="80%" width="80%" src="" name="iframe_modal"></iframe>
</div>