我有一个使用iframe的网站。 iframe本身就是网站的内容。现在在iframe中我想使用jQuery Dialog。但是,使用它时,叠加层和对话框仅显示在iframe内,而不是父窗体上。我的父html为对话框定义了以下html:
<div id="modalHolder"></div>
在我的iframe中,我使用以下javascript来创建对话框并显示它。
dlg1 = $(window.parent.document.getElementById("modalHolder"));
dlg1 = dlg1.dialog({
width: 300,
height: 150,
modal: true,
autoOpen: false,
resizable: false,
closeOnEscape: false,
draggable: false,
overlay:
{
backgroundColor: 'red',
opacity: 0.65
},
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
要显示我使用的对话框:
dlg1.dialog('open');
答案 0 :(得分:26)
有简单而优雅的解决方案:
例如:
var $jParent = window.parent.jQuery.noConflict();
var dlg1 = $jParent('#modalHolder');
dlg1.dialog();
答案 1 :(得分:3)
因为对话框函数在iframe的上下文中运行,所以它总是会创建对话框div(如半透明背景div和对话框div)作为iframe的子元素。即使您从父文档中获取元素,实际脚本仍在iframe中运行。如果你有Firefox和Firebug,你应该能够使用HTML检查器来查看正在发生的事情。
我只能想到两个解决方案: