1

我有一个包含框架的主页

    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 会这样,以及是否有其他方法可以做到这一点?

4

1 回答 1

0

您没有替代品,但 Firefox 的行为似乎与记录一致(https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload)。onbeforeunload 的目的只是在离开页面时发出提示。

也许 jquery.unload ( http://api.jquery.com/unload/ ) 或 window.onunload 是你的想法。

于 2013-06-25T21:49:38.033 回答