javascript - Asp.net RegisterStartupScript 未触发

标签 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"));            
    }

并将启动脚本更改为:

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/

相关文章:

javascript - 使用 dat.GUI 选择颜色设置三个 js 中的一个对象的颜色

javascript - 在不使用 iframe 的情况下将聊天机器人集成到网站中

javascript - angular.bootstrap() - 在不需要 ng-app 或 ng-controller 的情况下引导 Angular 应用程序

javascript - 选择嵌套元素

c# - 使用 C# 将 PDF 文件转换为图像

asp.net - 拆分/模块化大型 ASP.NET Web 应用程序项目

asp.net - 如何防止重复器中交替模板的 itemtamplate 中的内容重复?

c# - 共享来自 C#、C++/CLI 和 C++ 的枚举

c# - 在转发器中定义变量?

javascript - 显示 JSON 返回的错误消息