如何?伺服器端下頁面動態添加JavaScript指令碼

來源:互聯網
上載者:User

    在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表單的結尾處,即</form>標籤之前.例如在頁面Page_Load事件中添加如下代碼:

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頁面的開始處,即"<form runat="server">"標籤之後.例如在頁面Page_Load事件中添加如下代碼:

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

    編譯器,開啟頁面的源檔案代碼,指令碼塊產生的位置如下所示.

<!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",函數名)"語句實現.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.