首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个RegisterClientScriptBlock

多个RegisterClientScriptBlock
EN

Stack Overflow用户
提问于 2012-08-07 04:57:14
回答 3查看 2.3K关注 0票数 5

我想在我的.cs文件上调用3个javascript函数,我试过了:

代码语言: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);

            }
        }

如果没有成功,我的回发就不会发生任何事情,但如果我只尝试调用这些函数中的一个,它就会工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-07 05:06:21

我相信你只能注册一个StartupScript块和多个ClientScriptBlocks (不同的密钥),而不是创建多个;将它们放在一起。

启动:将加载到表单ClientScript:页面底部

代码语言:javascript
复制
script.RegisterClientScriptBlock(this.GetType(), "key", "centerPopup1(); 
loadPopUp1();  msg1();", true);
票数 6
EN

Stack Overflow用户

发布于 2012-08-07 05:05:11

你总是为你的脚本块使用相同的标识符("key")。如果我没记错的话,在这种情况下,最后一个脚本块获胜。因此,您应该提供不同的密钥。

MSDN

客户端脚本由其键和类型唯一标识。具有相同键和类型的脚本被认为是重复的。只能向页面注册一个具有给定类型和密钥对的脚本。尝试注册已注册的脚本不会创建该脚本的副本。

编辑:我假设您也希望只在初始加载时注册脚本,而不是在回发时注册。因此,您应该改为检查if(!IsPostBack)

票数 1
EN

Stack Overflow用户

发布于 2012-08-07 05:02:47

尝试使用RegisterStartupScript而不是RegisterClientScriptBlock。使用RegisterClientScriptBlock,您的脚本调用可以在加载其余页面之前执行。如果您尝试引用的组件尚未加载,则调用将失败。

此外,您还必须将javascript代码包含在脚本标记中。

参见ClientScriptManager.RegisterStartupScript Method (Type, String, String, Boolean)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11835809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档