asp.net在服务器端输出js代码的方法和位置分析

本文介绍了四种在ASP.NET中服务器端输出JavaScript代码的方法:Response.Write、RegisterClientScriptInclude、RegisterClientScriptBlock和RegisterStartupScript。详细分析了它们在页面源代码中的位置,并给出了使用建议。对于与页面对象交互的脚本,推荐使用RegisterStartupScript,而希望尽早执行的脚本可使用RegisterClientScriptBlock。同时,文章强调避免过多使用Response.Write,以保持HTML标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作方法:

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值