从iFrame中的UpdatePanel中调用父页面javascript
Call parent page javascript from within UpdatePanel inside iFrame
我遇到了从我的UpdatePanel中调用javascript的问题,即在iFrame中。我可以使用 parent.functionName() 从 iFrame 中调用父页面 javascript,而不会出现问题。
这是我的页面名称.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/en-us/library/z9h4dk8y.aspx)。
在页面名称中.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());
}
}
但我必须说,它并不漂亮...
相关文章:
- 从javascript调用asp.net codebehind函数
- 如何使用javascript调用Php文件
- Can用户'MediaWiki上的自定义JavaScript调用Lua模块
- 从Javascript调用Applet方法
- php javascript代码从javascript调用php函数
- 是否可以从html中的javascript调用.vbs文件
- 从javascript调用C#Web服务并使用它(json格式)
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- Sinon Spy不使用Javascript调用或应用程序
- 使用javascript调用javawebservice
- 从javascript调用服务器端的下拉列表onchange函数
- 单击按钮时,使用Javascript调用并返回值
- 函数1结束后,JavaScript调用函数2
- 对wcf服务的javascript调用
- 使用JavaScript调用Excel文件
- 从JavaScript调用JAX-WSWeb服务时参数为Null
- 从javascript调用codeigniter方法并传递数据
- 使用usinf-if语句javascript调用函数
- 通过Javascript调用php文件
- 从javascript调用flash点击事件