5

我想在我的 .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);

            }
        }

没有成功,我的回传没有任何反应,但如果我尝试只调用其中一个函数,它就可以工作。

4

3 回答 3

6

我相信您只能注册一个 StartupScript Block 和多个 ClientScriptBlocks(不同的键)而不是创建多个;让它们彼此相邻。

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

script.RegisterClientScriptBlock(this.GetType(), "key", "centerPopup1(); 
loadPopUp1();  msg1();", true);
于 2012-08-06T21:06:21.413 回答
1

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

MSDN

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

编辑:我假设您还想仅在初始加载而不是回发时注册脚本。所以你应该检查一下if(!IsPostBack)

于 2012-08-06T21:05:10.707 回答
0

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

此外,您必须将您的 JavaScript 代码包含在脚本标签中。

请参阅ClientScriptManager.RegisterStartupScript 方法(类型、字符串、字符串、布尔值)

于 2012-08-06T21:02:46.550 回答