上一章寫了asp.net中registerstartupscript方法的使用,在.net framework中與此相似的還有方法:registerclientscriptblock. 這兩個方法的作用都是從前臺向后臺寫腳本, 這兩個方法唯一的不同之處在于從“何處”發送腳本塊。registerclientscriptblock() 在 web 窗體的開始處(緊接著 <form runat="server"> 標識之后)發送腳本塊,而 registerstartupscript() 在 web 窗體的結尾處(在 </form> 標識之前)發送腳本塊。
registerstartupscript() 用于添加要在加載頁面后運行的腳本塊,通過這種方法添加的腳本塊位于 web 窗體的結尾處,因為必須在腳本運行前定義腳本要修改的 html 元素。也就是說,如果您要使用客戶端腳本將焦點設置到文本框,必須確保文本框的 html 標記位于設置該文本框的焦點的腳本之前。
registerclientscriptblock() 方法用于為響應客戶端事件而執行的腳本代碼。通過此方法發送的腳本塊位于 web 頁面的開始處,因為這種方法不要求將腳本塊置于所有 html 元素之后,即它一般不使用文檔內自定義的控件。
如果你僅僅是注冊一些函數,這兩者的效果是一樣的。但如果你要注冊一些全局的腳本,如定義一些全局變量并賦值,那么它在html中的先后位置可能就比較重要,此時就應該用registerstartupscript保證腳本能在前面被執行。
以下是該方法的一個使用實例(見msdn):
<html>
<head>
<script language="vb" runat="server">
sub page_load( sender as object,e as eventargs)
'form the script that is to be registered at client side.
dim scriptstring as string = "<script language=javascript> function doclick() {"
scriptstring += "myform.show.value='welcome to microsoft .net'}<"
scriptstring += "/"
scriptstring += "script>"
if(not isclientscriptblockregistered("clientscript"))
registerclientscriptblock("clientscript", scriptstring)
end if
end sub
</script>
</head>
<body topmargin="20" leftmargin="10">
<form id="myform" runat="server">
<input type="text" id="show" >
<input type="button" value="clickme" >
</form>
</body>
</html>
新聞熱點
疑難解答
圖片精選