Javascript jQuery对话框与<;对象>;,无法从对象文档中调用对话框(';close';)

Javascript jQuery对话框与<;对象>;,无法从对象文档中调用对话框(';close';),javascript,jquery,html,dialog,Javascript,Jquery,Html,Dialog,我在web应用程序上遇到以下情况 单击链接时会动态生成并打开一个对话框: var dialogInitiator = $("<div id='dialog-initiator' style='background-color: "+bgcolor+";'>Loading...</div>"); dialogInitiator.appendTo(parentFrame); dialogInitiator.dialog({ modal:true, autoOp

我在web应用程序上遇到以下情况

单击链接时会动态生成并打开一个对话框:

var dialogInitiator = $("<div id='dialog-initiator' style='background-color: "+bgcolor+";'>Loading...</div>");
dialogInitiator.appendTo(parentFrame);
dialogInitiator.dialog({
    modal:true,
    autoOpen: false
}).on('keydown', function(evt) {
    if (evt.keyCode === $.ui.keyCode.ESCAPE) {
        dialogInitiator.dialog('close');
    }
    evt.stopPropagation();
});
dialogInitiator.dialog('open');
var dialogInitiator=$(“加载…”);
dialogInitiator.appendTo(parentFrame);
dialogInitiator.dialog({
莫代尔:是的,
自动打开:错误
}).on('keydown',功能(evt){
if(evt.keyCode==$.ui.keyCode.ESCAPE){
dialogInitiator.dialog('close');
}
evt.stopPropagation();
});
dialogInitiator.dialog('open');
紧接着,我将一个新的html页面加载到对话框中,其中包含一个,如下所示:

var objectFrame = $('<object style="border: 0;width:'+(dlwidth-30)+'px;min-height:'+(dlheight-46)+'px;" type="text/html" style="overflow:auto;" data="'+url+'"></object>');
dialogInitiator.html(objectFrame);
var objectFrame=$('');
dialogInitiator.html(objectFrame);
现在,“url”变量包含指向这个新html文档的链接。当该页面准备就绪时,它将关注一个输入字段。这将防止ESCAPE键关闭对话框。因此,我试图在escape按键时手动触发.dialog('close')事件

我在加载的文档中执行以下操作:

$(“#对话框启动器”,window.parent.document.dialog('close')

它会得到以下错误:

“错误:无法在初始化之前调用对话框上的方法;尝试调用方法‘close”“”

奇怪的是,当我打电话时:

console.log($('#dialog initiator',window.parent.document).html()); 它显示对话框中的html。所以它实际上是启动的

嗯,我曾试图在谷歌的帮助下修复这个错误,但没有成功。我想我的情况很具体

注意:由于我们在modalDialogs中使用的旧功能,我们被迫使用将整个网页加载到对话框中的技术。由于它们在最新的Google Chrome中被去除,我们用jQuery对话框构建了一个临时解决方案


我希望有人能帮助我。我很感激

您可以尝试在创建模式后创建的全局方法

dialogInitiator.dialog({
    modal: true,
    autoOpen: false,
    create: funtion(e,ui) {
        window.closeMyDialog = function() {
            $('#dialog-initiator').dialog('close');    
        };
    }
})...

然后通过执行
window.parent.closeMyDialog()调用它

为什么不使用JQuery UI?这比自己做容易多了


为什么是
对象而不是
iframe
(因为您似乎只在其中显示HTML文档)…很抱歉我的回复太晚了。这很有魅力。非常感谢您帮助我:)