用于在画布上绘制的 JavaScript 函数(从 aspx 页面调用)会导致错误

本文关键字:调用 aspx 错误 绘制 函数 JavaScript 用于 | 更新日期: 2023-09-27 18:30:22

我需要从aspx页面(C#)调用javascript函数。这是位于aspx文件中的shor函数,它绘制了一些数字。该函数通过按下按钮调用。图形的参数取自mssql数据库的一些索引。javascript 代码由下一个命令调用:

ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "myScript", "<script language='javascript'>htm("+param+")</script>");
问题是,如果我将javascript函数htm

放在aspx页面的部分,那么我会得到一个"htm函数未定义",以防万一我将javascript放在html代码的末尾,则在获取画布上下文(null对象)时出错,因为画布尚未加载。该问题的部分解决方案是将javascript函数分配给window.onload,但这不是我需要的解决方案,因为按下按钮后只能绘制一次图形。

用于在画布上绘制的 JavaScript 函数(从 aspx 页面调用)会导致错误

如果可以在服务器端代码中定义 OnClientClick 数据,则可以将其与服务器端数据一起使用:

myButton.OnClientClick = "htm(" + param + "); return false";

单击此按钮时 - 它将导致纯 cleint 侧单击,无需任何回发。

UPDATE 如果你确实需要为服务器端调用它,你需要等到函数htm被定义,你可以像这样使用超时:

cs.RegisterStartupScript(this.GetType(), "myScript", "(function htmCaller() { if (typeof (htm) == 'undefined') { setTimeout(htmCaller, 500) } else { htm("+param+") })(); }", true);