Asp.net RegisterStartupScript没有解雇

时间:2015-11-04 13:49:27

标签: javascript c# asp.net

在我的asp.net应用程序中,我尝试通过执行以下操作来调用Javascript函数:

Page.ClientScript.RegisterStartupScript(this.GetType(), "goToDiv", "function goToDiv(){window.location.hash = '#ctl00_body_ApplicationFormContainer'};", true);        

但它没有解雇。

在回发事件之后调用JavaScript函数,但我认为它仍然应该触发,因为我将以下代码添加到Page_Load

if (IsPostBack)
    {
        Response.Write("POSTBACK:" + DateTime.Now.ToString("hh.mm.ss.ffffff"));            
    }

并将startupscript更改为:

Page.ClientScript.RegisterStartupScript(this.GetType(), "goToDiv", "alert('POSTBACK: "+DateTime.Now.ToString("hh.mm.ss.ffffff")+"')", true);         

并且JavaScript提醒时间是在回发时间之后,告诉我在回发后发出了JavaScript警报?

然后我更改了代码并转到控制台中的sources选项卡,在运行启动脚本之前输入:

goToDiv()

发出以下错误:

Uncaught ReferenceError: goToDiv is not defined(…)

例如该功能不存在。

然后我在启动脚本事件之后再次输入它,然后它运行了,所以我知道函数已经创建 - 那为什么它没有运行?

我的代码似乎在语法上是正确的,所以我看不出问题是什么?

1 个答案:

答案 0 :(得分:3)

您的代码: -

Page.ClientScript.RegisterStartupScript(this.GetType(), "goToDiv",
   "function goToDiv(){window.location.hash = '#ctl00_body_ApplicationFormContainer'};",
    true);

只是添加Javascript函数但不执行它。你需要触发这个功能吗?

只需添加一个按钮进行测试: -

<input type="button" onclick="goToDiv()"  value="Foo" />

当您单击此按钮时,它将执行此Javascript功能。

如果您打算执行某个块,那么为什么要创建一个函数?您可以自己执行Javascript语句。

  

并且JavaScript提醒时间是在回发时间之后,告诉我   回发后会触发JavaScript警报吗?

很明显,您正在服务器端注册Javascript代码,因此当页面在浏览器(客户端)中呈现时,您的JS代码才会被执行。