none
有關彈跳訊息 RRS feed

  • 問題

  • 小弟 有一筆資料,更新完後,欲跳出訊息,告知使用者「已更新完畢」字樣

    有試過 button.onclick...但此種方式,還沒處理時,會先跳出訊息,但畫面會保留著

    改用下列方式
      Response.Write("<script language='javascript'>")
      Response.Write("alert(' 已完成異動..')")
      Response.Write("</script>")

    此種方式,可確定更新完畢後,再彈跳出來,但彈跳同時,畫面是空白,只有訊息字樣,按「確定」後,會恢復原貌

    不曉各位大大,有沒有遇過此類問題

    彈跳訊息可正常顯示,並保留畫面資料

    2009年4月2日 上午 04:23

解答

  • 我覺得這個問題可以思考一下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
    2009年4月3日 上午 09:29

所有回覆

  • 順其自然你好
    或者你可以試試
    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
    2009年4月2日 上午 05:28
  • 我覺得這個問題可以思考一下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
    2009年4月3日 上午 09:29
  • 如果你有使用 ASP.NET AJAX 的話,可以使用 PageMethods 來更新資料,然後寫一小段 JavaScript 即可。
    小人物一枚。
    2009年4月4日 上午 05:34
    版主
  • 在 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=


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年4月4日 上午 06:06