ASP.NET 網頁動態添加客戶端腳本

在System.Web.UI.Page類中包含了RegisterStarupScript()和RegisterClientScriptBlock()兩個方法,使用這兩個方法能夠實現向Web頁面動態添加腳本塊,客戶端腳本按運行方式能夠分爲兩類:一類是在加載頁面後當即運行,另外一類是在發生客戶端事件後才運行.前者的常見示例是打開頁面時當即彈出一個廣告條;後者的常見示例是當用戶單擊莫按鈕時彈出一個消息框.
RegisterStartupScript()和RegisterClientScriptBlock()兩種方法使用形式以下:瀏覽器

Page.RegisterStartupScript(string key,string script);
Page.RegisterClientScriptBlock(string key,string script);

參數key: 是生成客戶端腳本塊的惟一標識符;服務器

參數script: 是將要生成的客戶端腳本塊,它是一個字符串類型.
這兩鍾方法惟一的區別就是生成腳本的位置不一樣;函數

(1)RegisterStarupScript()方法
使用RegisterStarupScript()方法用於添加須要在加載頁面後當即運行的腳本塊.經過此方法添加的腳本塊位於Web窗體的結尾處,即標籤以前.例如在頁面Page_Load事件中添加以下代碼:post

Page.RegisterStartupScript("key","<script>alert('歡迎您來到本網沾!');</script>"); 

執行上面的程序,在IE瀏覽器中選擇"查看"菜單的"源文件"選項,腳本塊生成的位置如以下所示:網站

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

    <HEAD>

        <title>Web22</title>

        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

        <meta name="CODE_LANGUAGE" Content="C#">

        <meta name="vs_defaultClientScript" content="JavaScript">

        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

    </HEAD>

    <body MS_POSITIONING="GridLayout">

        <form name="Form1" method="post" action="Web22.aspx" id="Form1">

<input type="hidden" name="__VIEWSTATE" value="dDwyMTA1NTI4MTE3Ozs+rxjH8qXphIPYQuLSie2igMF+KSU=" />

     <FONT face="宋體">

                <input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 464px; POSITION: absolute; TOP: 48px" /></FONT>

                <script>alert('歡迎您來到本網站!');</script>

</form>

    </body>

</HTML> 

(2)RegisterClientScriptBlock()
使用RegisterClientScriptBlock()方法生成的腳本塊位於Web頁面的開始處,即"
"標籤以後.例如在頁面Page_Load事件中添加以下代碼:this

Page.RegisterClientScriptBlock("key","<script>alert('歡迎您來到本網站!');</script>"); 

編譯程序,打開頁面的源文件代碼,腳本塊生成的位置以下所示.spa

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

    <HEAD>

        <title>Web22</title>

        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

        <meta name="CODE_LANGUAGE" Content="C#">

        <meta name="vs_defaultClientScript" content="JavaScript">

        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

    </HEAD>

    <body MS_POSITIONING="GridLayout">

        <form name="Form1" method="post" action="Web22.aspx" id="Form1">

<input type="hidden" name="__VIEWSTATE" value="dDwyMTA1NTI4MTE3Ozs+rxjH8qXphIPYQuLSie2igMF+KSU=" />

      

         <script>alert('歡迎您來到本網站!');</script>

   

        <FONT face="宋體">

                <input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 464px; POSITION: absolute; TOP: 48px" /></FONT>

        </form>

    </body>

</HTML>

此外Page類還分別爲上述兩個方法提供了輔助方法,它們是IsStartupScriptRegistered(string key)和IsClientScriptBlockRegistered(string key).這兩個方法都接受一個參數Key,並返回一個布爾值,用於標誌關鍵字爲key的腳本塊是否已添加到頁面中.若是腳本塊已經添加到頁面都返回True,不然將返回False.使用這兩個輔助方法能夠避免同一腳本塊在同一頁面中重複添加.
另一種方式是爲控件添加觸發條件.若是爲一個Button控件添加"onclick"腳本事件,可在服務器使用"Button.Attributes.Add("onclick",函數名)"語句實現. code

this.btnDel.Attributes.Add("onclick","return confirm('是否刪除?')");
相關文章
相關標籤/搜索