2011-12-12 39 views
2

我的目標是顯示一個非模態的jquery-ui對話框,它將顯示一個請等待消息以及加載動畫。該對話框將顯示在用戶來自的頁面上,而不是繼續。我基本上已經在下面的代碼中工作了。但是,Safari不會顯示請稍等的對話框。 Firefox和Chrome顯示對話框並按照href。 Safari只是遵循href,但不會顯示對話框。請等待對話框 - safari特定問題的jquery實現

如果我嘗試一個preventDefault();或返回虛假;在click事件處理程序中,safari(和所有瀏覽器)將顯示請稍等的對話框,但當然不會遵循href。所以我希望進入點擊的href的默認行爲,就在去href時,我想要顯示對話框。

我甚至試圖做一個點擊處理程序,並在裏面做一個preventDefault(),然後打開對話框,然後設置window.location或location.href,但Safari仍然會跟着href而不顯示對話框。

有沒有人有任何其他的想法?

的javascript:

$(document).ready(function() { 

     // Register the pleaseWaitDialog element as a jquery-ui dialog widget with certain options set 
     $("#pleaseWaitDialog").dialog({ 
      autoOpen: false, 
      buttons: {}, 
      open: function(event, ui) { $(".ui-dialog-title, .ui-dialog-titlebar-close").hide(); }, // hide the dialog title bar 
      resizable: false, 
      show: {effect: 'fade', duration: 500}, 
      height: 120, 
      width: 300 
     }); 

     // When a link to add a meeting is clicked, then display the please wait dialog 
     $("a.addMeetingLink").click(function(e) { 
      // But wait 5 seceonds before displaying the please wait dialog 
      setTimeout(function() { 
       $("#pleaseWaitDialog").dialog("open"); 
      }, 5000); 
     }); 

    }); 

HTML:

<a href="/ripplemobile/trip/addmeeting/81/1/305/308" class="addMeetingLink">Add Meeting</a> 

<div id="pleaseWaitDialog"> 
    <div> 
     <p>Please wait</p> 
     <img src="/ripplemobile/images/ajax-loader.gif" /> 
    </div> 
</div> 

回答

0

快速點,編輯這個功能:

// When a link to add a meeting is clicked, then display the please wait dialog 
     $("a.addMeetingLink").click(function(e) { 

      // ADD 

      e.preventDefault(); 

      // But wait 5 seceonds before displaying the please wait dialog 
      setTimeout(function() { 
       $("#pleaseWaitDialog").dialog("open"); 
      }, 5000); 
     }); 

這應該解決您的當前問題。

+0

我試過這個。這將使得請等待對話框顯示(即使在Safari中),但它將不再繼續到錨標籤的href位置。那麼我該如何跟蹤錨標記並顯示對話框呢? – Sheparzo

+0

你的意思是顯示對話框,然後按照href延遲? 當您按照href時,對話框將關閉,當您移動到href目的地 如果您希望顯示對話框,然後繼續到目的地,您可以添加另一個超時打開對話框打開去調用 –

+0

沒有做在延遲之後不要遵循href。我希望遵循href,並且存在固有的延遲,因爲它需要服務器處理請求並提供響應。在等待服務器響應期間,我希望瀏覽器等待5秒鐘,如果服務器仍未響應,請顯示請稍候對話框。該對話框隨後將顯示,直到服務器最終響應,在這種情況下,對話框消失並顯示新頁面。如果服務器在5秒之前發生響應,那麼用戶甚至不會看到請稍等的對話框。 – Sheparzo