操作方法:
1)Page.Response.Write("<script>alert('response.write js');</script>");
2)Page.ClientScript.RegisterClientScriptInclude("myScript0","mytest.js");
3)String scriptStr1= "alert('RegisterClientScriptBlock');";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"myScript1",scriptStr1,true);
4)String scriptStr2 = "alert('RegisterStartupScript');";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript2", scriptStr2, true);
分析:
1)Response.Write 输出后的位置在源文件的第一行。
2)RegisterClientScriptInclude 输出后的位置会在<form>的下一行(在asp.net自带的脚本和一些隐藏域之下)。
3)RegisterClientScriptBlock 输出后的位置会在<form>的下一行(在asp.net自带的脚本和一些隐藏域之下)。
4)RegisterStartupScript 输出后的位置会在</form>的上一行
注:如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock。另外,尽量少用response.write输出js代码,因为它会破坏html的标准性。
测试代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.Response.Write("<script>alert('response.write js');</script>");
Page.ClientScript.RegisterClientScriptInclude("myScript0","mytest.js");
String scriptStr1 = "alert('RegisterClientScriptBlock');";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myScript1", scriptStr1, true);
String scriptStr2 = "alert('RegisterStartupScript');";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript2", scriptStr2, true);
}
}
在浏览器中运行后,查看页面源代码如下:
<script>alert('response.write js');</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZIXzsxjuNqBMVOPBVNvj6BJl6hcB" />
</div>
<script src="mytest.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
alert('RegisterClientScriptBlock');//]]>
</script>
<div>
</div>
<script type="text/javascript">
//<![CDATA[
alert('RegisterStartupScript');//]]>
</script>
</form>
</body>
</html>