gpt4 book ai didi

c# - 从 iFrame 内的 UpdatePanel 调用父页面 javascript

转载 作者:行者123 更新时间:2023-11-28 08:50:13 24 4
gpt4 key购买 nike

我遇到了从 UpdatePanel(位于 iFrame 内)调用 javascript 的问题。我可以使用parent.functionName() 从 iFrame 中调用父页面 javascript,不会出现任何问题。

这是在我的 pageName.aspx.cs 中。 (代码由 KP ( ASP.Net - Javascript inside AJAX UpdatePanel ))

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/en-us/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>

当然还有更多内容,但这些是基础知识。按钮已生成,并且在“action”表单的末尾有“jscriptfunction=CloseiFrame”。

但是没有任何警报,更不用说正在调用的函数了。我当然可以使用服务来解决所有这些问题,但我真的很想在页面和 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());
}
}

但我必须说,这并不漂亮......

关于c# - 从 iFrame 内的 UpdatePanel 调用父页面 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19241067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com