我有一个包含框架的主页
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会以这种方式表现,如果有其他方法可以做到这一点?
答案 0 :(得分:0)
没有替代品,但Firefox似乎表现得有记录(https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload)。 onbeforeunload的目的只是在离开页面时提示。
或许jquery.unload(http://api.jquery.com/unload/)或window.onunload就是您的想法。