最佳解答者
有關彈跳訊息

問題
-
小弟 有一筆資料,更新完後,欲跳出訊息,告知使用者「已更新完畢」字樣
有試過 button.onclick...但此種方式,還沒處理時,會先跳出訊息,但畫面會保留著
改用下列方式
Response.Write("<script language='javascript'>")
Response.Write("alert(' 已完成異動..')")
Response.Write("</script>")
此種方式,可確定更新完畢後,再彈跳出來,但彈跳同時,畫面是空白,只有訊息字樣,按「確定」後,會恢復原貌
不曉各位大大,有沒有遇過此類問題
彈跳訊息可正常顯示,並保留畫面資料
解答
-
我覺得這個問題可以思考一下HTML文件結構的呈現,如果我沒記錯的話HTML文件是以直譯的方式被瀏覽器所解譯,所以當你執行的指令碼區塊,
是放置在整個文件的頂端時,瀏覽器讀到該指令碼就執行了,此時頁面都還沒 load 完,所以當然是一片空白。
我剛也再度確認過,你呼叫的 Response.Write() 方法,會在 Postback 後,直接輸出於HTML文件最頂端,如下:
===<script language='javascript'>alert('以 Response.Write() 方法輸出指令碼區塊。')</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> Hunterpo Development Lab. </title></head> <body> <form name="form1" method="post" action="DebugTest.aspx" id="form1"> ... </form> </body> </html>
因此,為了達成你的需求,你必須在頁面 load 完後才執行跳出訊息,也就是呼叫 ChiYau 大所說的方法,在你的頁面更新完資料後,呼叫
Page.ClientScript.RegisterStartupScript() 方法(用法請參考http://msdn.microsoft.com/zh-tw/library/z9h4dk8y(VS.80).aspx),此方法會
將 script 加在HTML文件末端,如下:
===
<!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> Hunterpo Development Lab. </title></head> <body> <form name="form1" method="post" action="DebugTest.aspx" id="form1"> ... <script type="text/javascript"> //<![CDATA[ alert('呼叫 Page.ClientScript.RegisterStartupScript() 方法,向 System.Web.UI.Page 物件註冊啟始指令碼。(置於呈現頁面結構末端)');//]]> </script> </form> </body> </html>
了解原理後,就知道要怎麼做了,希望對你有幫助,有錯也請指正。- 已提議為解答 Lolota Lee 2009年4月6日 上午 03:17
- 已標示為解答 Lolota Lee 2009年4月8日 上午 01:33
所有回覆
-
順其自然你好
或者你可以試試
REGISTER 一個JAVASCRIPT 在你的 BUTTON CLICK EVENT 入面
E.G.
PROTECTED SUB BUTTON_CLICK(BYVAL SENDER AS OBJECT, BYVAL E AS EVENT)
Page.ClientScript.RegisterStartupScript(Me.GetType, "MyJS", "alert(' 已完成異動..');", true)
END PROTECTED
(大概是這樣)
重要的是
Page.ClientScript.RegisterStartupScript(Me.GetType, "MyJS", "alert(' 已完成異動..');", true)
Please forgive me if I mis-understood your questions,
Hope this can help
Chi -
我覺得這個問題可以思考一下HTML文件結構的呈現,如果我沒記錯的話HTML文件是以直譯的方式被瀏覽器所解譯,所以當你執行的指令碼區塊,
是放置在整個文件的頂端時,瀏覽器讀到該指令碼就執行了,此時頁面都還沒 load 完,所以當然是一片空白。
我剛也再度確認過,你呼叫的 Response.Write() 方法,會在 Postback 後,直接輸出於HTML文件最頂端,如下:
===<script language='javascript'>alert('以 Response.Write() 方法輸出指令碼區塊。')</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> Hunterpo Development Lab. </title></head> <body> <form name="form1" method="post" action="DebugTest.aspx" id="form1"> ... </form> </body> </html>
因此,為了達成你的需求,你必須在頁面 load 完後才執行跳出訊息,也就是呼叫 ChiYau 大所說的方法,在你的頁面更新完資料後,呼叫
Page.ClientScript.RegisterStartupScript() 方法(用法請參考http://msdn.microsoft.com/zh-tw/library/z9h4dk8y(VS.80).aspx),此方法會
將 script 加在HTML文件末端,如下:
===
<!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> Hunterpo Development Lab. </title></head> <body> <form name="form1" method="post" action="DebugTest.aspx" id="form1"> ... <script type="text/javascript"> //<![CDATA[ alert('呼叫 Page.ClientScript.RegisterStartupScript() 方法,向 System.Web.UI.Page 物件註冊啟始指令碼。(置於呈現頁面結構末端)');//]]> </script> </form> </body> </html>
了解原理後,就知道要怎麼做了,希望對你有幫助,有錯也請指正。- 已提議為解答 Lolota Lee 2009年4月6日 上午 03:17
- 已標示為解答 Lolota Lee 2009年4月8日 上午 01:33
-
在 asp.net 線上手冊有說到,asp.net 會解譯 <script>, </script> ,所以需要拆開來變成 "</" & "script>"
由於 ", &, <, > 是關鍵字,我不會用上方的搜尋功能找到相關討論,但你可以透過 google 搜尋本版既有討論:
http://www.google.com.tw/search?hl=zh-TW&q=%22%3C%2F%22+%26+%22script%3E%22+site%3Ahttp%3A%2F%2Fsocial.msdn.microsoft.com%2FForums%2Fzh-TW%2F&meta=&aq=f&oq=
論壇是網友平等互助 保證解答請至 微軟技術支援服務