为什么Javascript代码不在用户控件中运行?

时间:2009-09-11 20:53:57

标签: asp.net javascript updatepanel

我正在开发一个包含单个页面的项目(home.aspx)。

Home.aspx包含一个ScriptManager和一个UpdatePanel - 一个带有一些LinkBut​​tons的div,用于加载相关的UserControl。

其中一些用户控件包含javascript。我的问题是javascript没有按时运行(在LinkBut​​ton点击或UC加载后)。

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

确保您的脚本已在ScriptManager注册。

答案 1 :(得分:0)

如果用户控件具有JS内联,则不会运行;通过设置元素的innerHTML(UpdatePanel所做的)而添加的JavaScript不会运行。

正如Rick Schott所提到的,如果用户控件使用ScriptManager注册其脚本 - 可以在asp:ScriptReference中包含ScriptManagerProxy,也可以使用其中一个来添加代码隐藏ScriptManager.Register*变种 - 它会运行。

答案 2 :(得分:0)

感谢您的回答,但我已经检查了这个解决方案。 用户控件没有脚本管理器,脚本管理器放在Home.aspx中。 我同时使用Page.RegisterClientScriptBlock,Page.RegisterStartupScript,... 但这些不能正常工作。 UC中的Java脚本代码位于UC下方的脚本标记中,如下所示:

                   function pageLoad() {
   $addHandler($get("<%=Button2.ClientID%>"), 'click', cp);

}
                       function cp(){

  /* Do shomthing ... */

}

// * ################ JAVASCRIPT CODES结尾

在上面的JS代码中,Button2是一个放在UC中的asp按钮。 我今天发现了一件新事:如果在上面的脚本标签中添加defer ='defer'它会像魅力一样运行! 但是这个解决方案适用于IE(仅限),所以这不是最好的解决方案。 我还能做些什么......?