我正在开发一个包含单个页面的项目(home.aspx)。
Home.aspx包含一个ScriptManager和一个UpdatePanel - 一个带有一些LinkButtons的div,用于加载相关的UserControl。
其中一些用户控件包含javascript。我的问题是javascript没有按时运行(在LinkButton点击或UC加载后)。
如何解决这个问题?
答案 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(仅限),所以这不是最好的解决方案。 我还能做些什么......?