簡體   English   中英

從iFrame的UpdatePanel中調用父頁面javascript

[英]Call parent page javascript from within UpdatePanel inside iFrame

我遇到了在iFrame中從我的UpdatePanel調用javascript的問題。 我可以使用parent.functionName()從iFrame調用父頁面javascript,而不會出現問題。

這是在我的pageName.aspx.cs中。 (由KP提供的代碼( ASP.Net-AJAX UpdatePanel中的Javascript ))

protected override void Page_Load(object sender, EventArgs e)
{
    base.Page_Load(sender, e);

    StringBuilder scriptStringB = new StringBuilder();
    scriptStringB.Append("<script type=\"text/javascript\">");
    scriptStringB.Append("function CloseiFrame() {");
    scriptStringB.Append(" alert(\"CloseiFrame\");");
    scriptStringB.Append(" CloseiFrameThroughParent();");
    scriptStringB.Append("}");
    scriptStringB.Append("</script>");

    RegisterClientStartupScript("CloseiFrame", scriptStringB.ToString());
}
private void RegisterClientStartupScript(string scriptKey, string scriptText)
{
    ScriptManager sManager = ScriptManager.GetCurrent(this.Page);

    if (sManager != null && sManager.IsInAsyncPostBack)
    {
        //if a MS AJAX request, use the Scriptmanager class
        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), scriptKey, scriptText, false);
    }
    else
    {
        //if a standard postback, use the standard ClientScript method
        scriptText = string.Concat("Sys.Application.add_load(function(){", scriptText, "});");
        this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), scriptKey, scriptText, false);
    }
}

我嘗試了其他方法,例如使用Microsoft方法( http://msdn.microsoft.com/zh-cn/library/z9h4dk8y.aspx )。

在pageName.aspx中,它看起來像這樣:

<form id="Form1" class="iFrameForm" method="post" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            ...Scripts are included here
        </Scripts>
    </asp:ScriptManager>
    <asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
        <ContentTemplate>
            <asp:imagebutton id="ExitButton" runat="server" 
                           ImageUrl="~/exit.png" 
                           AlternateText="<%$ Resources:Resource, Exit %>" ToolTip="<%$ Resources:Resource, Exit %>" OnClick="Exit_Click" >
            </asp:imagebutton>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

當然還有更多,但這是基礎。 該按鈕已生成,並且在“操作”形式的末尾具有“ jscriptfunction = CloseiFrame”。

但是沒有警報,更不用說調用函數了。 我當然可以使用一項服務來解決所有這些問題,但是我真的很想在pages&javascript中解決此問題。

找到了“ A”解決方案。 使用Page_Load檢查它是回發還是正常的頁面加載,我可以從那里調用javascript函數。

protected override void Page_Load(object sender, System.EventArgs e)
{
    base.Page_Load(sender, e);

    if (IsPostBack) //If it is a postback close the popup
    {
        StringBuilder scriptStringB = new StringBuilder();
        scriptStringB.Append("<script type=\"text/javascript\">");
        scriptStringB.Append(" CloseiFrameThroughParent();");
        scriptStringB.Append("</script>");

        RegisterClientStartupScript("CloseiFrameThroughParent", scriptStringB.ToString());
    }
}

但是我必須說,這不漂亮...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM