我有一个包含框架的主页
function attachToTheSaveWhenLeave(sender) {
sender.onbeforeunload = function (ev) {
sender.Save();
};
}
<frameset cols="25%,75%">
<frame id ="Frame1" src="LeftFrame.aspx" />
<frame id ="frmTest" src="FrameContent.aspx" />
</frameset>
在一个框架(FrameContent.aspx)包含的页面中,我需要知道该页面是否被丢弃以触发 PostBack 并且服务器必须保存用户所做的更改
var isPostBack = false;
window.onload = function (ev) {
window.parent.attachToTheSaveWhenLeave(window);
}
function Save() {
if (!isPostBack)
$("input:submit")[0].click();
}
<form id="formFrame" runat="server" onsubmit="isPostBack=true;">
<div>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
</form>
在 IE 中,服务器接收回发,但对于 Firefox,我必须使用 setTimeOut 才能工作
function Save() {
if (!isPostBack)
setTimeout(function () {
$("input:submit")[0].click();
},1);
}
我不喜欢我找到的解决方案,也不了解 Firefox 的行为。谁能向我解释为什么 Firefox 会这样,以及是否有其他方法可以做到这一点?