2013-05-29 46 views
1

我有一個包含幀回傳在window.onbeforeunload不fireing與Firefox

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)包含頁面的一個主要頁面,我需要知道,如果該頁面丟棄以火回傳和服務器必須保存用戶所做的更改

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這樣做,如果有另一種方式來做到這一點?

回答