我想在我的.cs文件上调用3个javascript函数,我试过了:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
ClientScriptManager script = Page.ClientScript;
ClientScriptManager script2 = Page.ClientScript;
ClientScriptManager script3 = Page.ClientScript;
script.RegisterClientScriptBlock(this.GetType(), "key", "centerPopup1()", true);
script2.RegisterClientScriptBlock(this.GetType(), "key", "loadPopup1()", true);
script3.RegisterClientScriptBlock(this.GetType(), "key", "msg1()", true);
}
}如果没有成功,我的回发就不会发生任何事情,但如果我只尝试调用这些函数中的一个,它就会工作。
发布于 2012-08-07 05:06:21
我相信你只能注册一个StartupScript块和多个ClientScriptBlocks (不同的密钥),而不是创建多个;将它们放在一起。
启动:将加载到表单ClientScript:页面底部
script.RegisterClientScriptBlock(this.GetType(), "key", "centerPopup1();
loadPopUp1(); msg1();", true);发布于 2012-08-07 05:05:11
你总是为你的脚本块使用相同的标识符("key")。如果我没记错的话,在这种情况下,最后一个脚本块获胜。因此,您应该提供不同的密钥。
MSDN:
客户端脚本由其键和类型唯一标识。具有相同键和类型的脚本被认为是重复的。只能向页面注册一个具有给定类型和密钥对的脚本。尝试注册已注册的脚本不会创建该脚本的副本。
编辑:我假设您也希望只在初始加载时注册脚本,而不是在回发时注册。因此,您应该改为检查if(!IsPostBack)。
发布于 2012-08-07 05:02:47
尝试使用RegisterStartupScript而不是RegisterClientScriptBlock。使用RegisterClientScriptBlock,您的脚本调用可以在加载其余页面之前执行。如果您尝试引用的组件尚未加载,则调用将失败。
此外,您还必须将javascript代码包含在脚本标记中。
参见ClientScriptManager.RegisterStartupScript Method (Type, String, String, Boolean)。
https://stackoverflow.com/questions/11835809
复制相似问题