我创建了一个JSP页面,使用jQuery打开一个对话框。
<div id="dialog" title="Welcome To Chat" class="ui-helper-hidden tabdialog">
<iframe id="inlineframe" name="inlineframe" src="" frameborder="0" scrolling="auto" width="600" height="600" marginwidth="5" marginheight="5" ></iframe>
</div>
$("#inlineframe").attr("src","chat.jsp?roomid=" + id[1]);
$( "#dialog" ).dialog({
width:626,
height:626,
beforeClose:function(){
alert("closing");
}
});
到目前为止,这么好。注意我现在只在beforeClose
函数上使用警报。 iframe本身正在打开一个名为chat.jsp
的JSP页面,其中包含大量jQuery函数,因为它是聊天程序的前端。
如何向
chat.jsp
页面发送消息,以便它知道对话框正在关闭?&#34;
这很重要,因为chat.jsp
需要与用户退出聊天的服务器进行通信。这个过程可能需要大约一秒钟,因此我需要至少延迟对话的关闭时间。
将结束事件传达给chat.jsp
并提供足够时间执行适当关闭的最佳选择是什么?
答案 0 :(得分:1)
如果父页面(打开对话框)和iframe页面由同一个域提供,则可以执行以下操作:
从对话框中删除关闭按钮(参见this answer)。
在iframe页面中放置关闭按钮。此按钮会将用户注销,然后通过调用以下方式关闭对话框:
window.top.$('#dialog').dialog('close');
如果想要分离父页面和iframe页面(因此iframe页面不需要知道对话框div的id),您可以让关闭按钮在父文档上触发自定义事件:
window.top.$(document).trigger('dialog-close');
在父页面中注册事件处理程序:
$(document).on('dialog-close', function() {
$('#dialog').dialog('close');
});