我有一个 aspx 页面,我将其加载到通过 JQuery 对话框显示的 iframe 中。该页面有一个取消按钮,该按钮调用成功关闭 JQuery 对话框的“CloseMe”脚本。该页面还有一个回发的保存按钮。保存数据后,我想关闭对话框。
我已经尝试注册一个在 document.ready 上调用“CloseMe”函数的启动脚本。当我这样做时,代码开始在 JQuery 中抛出没有意义的 javascript 错误。像“数组未定义”和“函数未定义”和“日期未定义”。编辑:它在遇到“window.parent.$...(close) 语句时执行此操作。请注意该行之前的警报。它正确报告了 iframe 的 ID。
我从取消按钮使用相同的“CloseMe”功能,一切正常。
编辑:在调试器中忽略所有 25 个左右的错误后,对话框关闭。
这是打开对话框的 javascript:
function jQueryShowiFrame(url, title, reloadOnClose) {
$('<iframe id="modalIframeId" allowtransparency="true" frameborder="0" src="' + url + '" />').load(function () {
var width = $("#modalIframeId").contents().width();
var height = $("#modalIframeId").contents().height();
var paddingWidth = parseInt($("#modalIframeId").css("padding-left"), 10) + parseInt($("#modalIframeId").css("padding-right"), 10);
// the sequence of these steps is important
$("#modalIframeId").dialog("option", "width", (width + paddingWidth) + 'px');
this.style.width = width + 'px';
this.style.height = height + 'px';
$("#modalIframeId").dialog("option", "position", "center");
})
.dialog({
title: title,
modal: true,
close: function (ev, ui) {
$(this).dialog('destroy').remove();
if (reloadOnClose) {
location.reload();
}
},
open: function (ev, ui) {
//alert('x');
}
});
}
这是页面标记:
<asp:Button ID="btnSave" runat="server" CssClass="BasicButton" Text="Save" />
<button type="button" id="btnClose" onclick="closeMe()" >Cancel</button>
<script type="text/javascript">
function closeMe() {
alert(window.frameElement.id);
window.parent.$('#' + window.frameElement.id).dialog('close');
}
</script>
这是保存按钮单击后面的代码:
Dim scr As String = "$(document).ready(function () { closeMe(); });"
ScriptManager.RegisterStartupScript(Me.Page, GetType(Page), Guid.NewGuid.ToString, scr, True)