javascript也玩pageLoad

來源:互聯網
上載者:User
    前幾天跟皺鍵討論ASP.NET AJAX的時候,他說在ASP.NET AJAX 下也有pageLoad事件,因為對這個pageLoad沒有什麼編程經驗,所以也就不覺得有什麼。不過昨天晚上的一個功能讓我感覺到了這個pageLoad功能上的令人感歎之處。
    眾所周知,ScriptManager是ASP.NET的的一個核心控制項,如果一個頁面用到了AJAX Extentions控制項的話,那麼該頁面上必須有ScriptManager控制項。當頁面上出現了異常時,它不會再像普通的2.0的頁面那樣顯示出紅黃頁(在沒有進行任何處理的情況下),而是以alert的方式彈出對話方塊,告知使用者出現了異常。這種彈出對話方塊的方式一般來說應該也是可以令人接受的,不過,若想得到更進階的使用者體驗的話,可能就需要我們自己手動再寫一些代碼了。比如說出現像網易郵箱中當你要清空垃圾郵件箱時的對話方塊效果,需要我們自己手動再寫一些代碼來實現。
   在html頁面上放置一個隱藏的層,該層用來顯示我們的異常資訊。
  

 1 <div id="errorMessage" style="LEFT: -30px; POSITION: relative; TOP: -257px; visibility:hidden">
 2 2                <div class="title">
 3 3                    操作提示
 4 4                </div>
 5 5                <div class="alertTxt">
 6 6                    <span id="errorMessageLabel" runat="server"></span>
 7 7                </div>
 8 8                <div>
 9 9                    <input id="Button1" class="btn" type="button" value="OK" onclick="javascript :onOK();" />
1010                </div>
1111            </div>
1212        </center>

 然後,我們就可以利用此層,以及ASP.NET AJAX架構下的JS的pageLoad事件中寫關於異常處理的事件了。

  

 1
 2<script language="javascript" type="text/javascript">
 3        function pageLoad()
 4        {
 5           Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
 6        }
 7        function onEndRequest(sender, e) 
 8        {
 9            // 異常發生時將對話方塊顯示給使用者
10            if(e.get_error())
11            {
12                // 顯示自訂對話方塊
13                $get("errorMessage").style.display = "block";
15                $get("errorMessageLabel").innerHTML ="出錯了,請重試!<br>" +  e.get_error().description;
16                // 通知PageRequestManager異常已經處理過
17                e.set_errorHandled(true);
18            }
19        }
20        function onOK()
21        {
22            $get("errorMessage").style.display = "none";
23        }
24</script>

  通過以上簡單的代碼,一個有著良好的使用者體驗的對話方塊就完成了。細細想想,這或許可以做為整個網站上所有頁面上的公有js檔案,將它嵌套到頁面中,則每個頁面的異常都會以一個良好體驗的對話方塊顯示給使用者。帥!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.