在我的 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"));
}
并将启动脚本更改为:
Page.ClientScript.RegisterStartupScript(this.GetType(), "goToDiv", "alert('POSTBACK: "+DateTime.Now.ToString("hh.mm.ss.ffffff")+"')", true);
JavaScript
警报时间在回发时间之后,告诉我 JavaScript
警报在回发后触发?
然后我改回代码并转到控制台中的源选项卡,在启动脚本运行之前,输入:
goToDiv()
出现以下错误:
Uncaught ReferenceError: goToDiv is not defined(…)
例如函数不存在。
然后我在启动脚本事件之后再次输入它,它运行了,所以我知道该函数已创建 - 为什么它没有运行?
我的代码在语法上似乎是正确的,所以我看不出问题出在哪里?
最佳答案
你的代码:-
Page.ClientScript.RegisterStartupScript(this.GetType(), "goToDiv",
"function goToDiv(){window.location.hash = '#ctl00_body_ApplicationFormContainer'};",
true);
只是简单地添加一个 Javascript 函数而不是执行它。您需要触发此功能吗?
只需添加一个按钮进行测试:-
<input type="button" onclick="goToDiv()" value="Foo" />
当您单击此按钮时,它将执行此 Javascript 函数。
如果您的目的是执行某个 block ,那么您为什么要创建一个函数?您可以自己执行 Javascript 语句。
and the JavaScript alert time was after the postback time, telling me the JavaScript alert is fired after the postback?
很明显,您在服务器端注册了 Javascript 代码,因此当页面在浏览器(客户端)中呈现时,您的 JS 代码才会被执行。
关于javascript - Asp.net RegisterStartupScript 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33523566/