Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 的区别






4.64/5 (6投票s)
主要区别在于 RegisterStartupScript 方法将 JavaScript 放置在 ASP.NET 页面的底部,紧挨着结束标签之前。
主要区别在于 RegisterStartupScript 方法将 JavaScript 放置在 ASP.NET 页面的底部,紧挨着结束 </form> 标签之前。而 RegisterClientScriptBlock 方法将 JavaScript 直接放置在页面的起始 <form> 标签之后。那么这有什么区别呢?这可能会有很大的区别,正如我们将会看到的。
例如,以下是在页面加载到浏览器时,使用 RegisterStartupScript 方法将焦点放在文本框上的方法(使用 Visual Basic):
Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", _
"document.forms[0]['TextBox1'].focus();", True)
这可以很好地工作,因为页面上的文本框在浏览器到达页面底部并执行这段 JavaScript 之前就已经生成并放置在页面上了。但是,如果改为这样编写(使用 RegisterClientScriptBlock 方法):
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", _
"document.forms[0]['TextBox1'].focus();", True)
焦点将无法到达文本框控件,并且页面上会生成 JavaScript 错误。
原因是浏览器会在文本框出现在页面之前就遇到 JavaScript。因此,JavaScript 将无法找到 TextBox1。
将 JavaScript 放在单独的文件中 (.js)
强烈建议将 JavaScript 函数放在单独的文件中(.js 文件)。一旦它们位于单独的文件中并成为项目的一部分,就可以使用前面描述的一些方法将该文件导入到页面中。
例如,可以使用以下代码在 ASP.NET 页面中包含 .js 文件:
Visual Basic
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", _
"MyJavaScriptFile.js")
C#
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript",
"MyJavaScriptFile.js");
一旦 .js 文件导入到 ASP.NET 页面,就可以像以前一样调用任何 JavaScript 函数。这是管理 JavaScript 函数并将其与 ASP.NET 页面的其他逻辑分离的好方法。同时,这也是在多个 ASP.NET 页面上使用相同 JavaScript 函数的简便方法。