2010-07-26 111 views
6

我遇到Google Chrome瀏覽器或Android(2.1)webbrowser問題。加載Google Chrome瀏覽器指示燈

我的web應用程序在每次換頁時調用restservices。這需要一些時間,我需要爲用戶提供反饋,就像一個「工作...」彈出窗口。其餘服務通過同步ajax請求進行調用。這裏是一個例子:

 
$.ajax({ 
    url: some URI, 
    async: false, 
    beforeSend: function() { 
     showIndicatorDialog(); 
    }, 
    complete: function() { 
     hideIndicatorDialog(); 
    }, 
    success: function(response) { 
     do something after success; 
    }, 
    error: function(response) { 
     do something after error; 
    }, 
    type: 'GET' 
}); 

這對FF和Opera很有用!但是當我使用Android設備訪問我的web應用時,加載指示燈不會顯示! Google瀏覽器似乎不適用於同步請求。

有人知道我如何得到這個工作或知道另一種解決方案來獲得加載指標鉻?

回答

8

解決方案是不使用同步請求。一般來說,同步請求應該使用從不使用,因爲它們傾向於阻止頁面上任何其他內容(甚至整個瀏覽器UI)的執行,這是不好的。

+0

我非常想聽到downvote的原因。 – 2010-07-26 15:22:53

+0

好吧,你的權利。但那是目前的架構,我不能在不久的將來改變它。 :/ – bedit 2010-07-26 15:30:58

+0

說同步請求應該「從不」被使用是一個非常大膽的陳述。它需要比「他們傾向於阻止事物」更好的解釋。他們阻止了什麼?如果用戶的應用程序中的所有內容都是異步的,用戶將如何收藏他們的位置 – 2010-07-26 15:32:45

3

您是說加載指示器不顯示在谷歌瀏覽器(桌面)上,或只顯示Android移動設備的Google Chrome瀏覽器?如果您使用的是最新版本的jQuery,那麼它應該適用於所有桌面瀏覽器。移動瀏覽器由於其接口設計截然不同而不太受支持,而且不是完整的瀏覽器,許多瀏覽器沒有全功能的JS支持。

這就是說,我沒有聽說過任何有關Chrome Lite的jQuery問題—關於Android平臺最令人印象深刻的事情之一是在移動平臺上包含一個功能齊全的瀏覽器。但我認爲有一個移動版本的jQuery可用或正在開發中。所以如果一切都失敗了,你可以試試。

對於在移動瀏覽器的JavaScript/jQuery的支持破敗,看到這個谷歌網上論壇帖子: http://groups.google.com/group/jquery-dev/msg/262fa7d9f3cbe96e

編輯: 雖然Chrome瀏覽器的UI似乎鎖住了,而你正在執行一個同步請求,我能夠通過簡單地將顯示負載指示和執行XHR之間有輕微的延遲讓過去這個:

function callAjax() { 
    showIndicatorDialog(); 
    setTimeout("testAjax()",100); 
} 
function testAjax() { 
    foo = $.ajax({ 
     url: "index4.htm", 
     global: false, 
     type: "POST", 
     data: { 
      id: 3 
     }, 
     dataType: "html", 
     async:false, 
     success: function(msg){ 
      $('#response').text(msg); 
     }, 
     complete: hideIndicatorDialog 
    }).responseText; 
} 

我使用POST請求,以防止瀏覽器緩存的響應,b這應該與獲取請求一樣好。我沒有安裝Android手機進行測試,但它在Google Chrome中運行良好。

+0

是的,該指標不會顯示在Google Chrome桌面和Android設備上。我使用jQuery的1.4.2版本。 也許我會玩jQTouch ... – bedit 2010-07-26 15:30:26

+0

@benjamin:試着在顯示加載指示符和啓動同步XHR之間加一個延遲。 – 2010-07-26 16:29:11

+0

嗨Lèse,超時工作!感謝您的巨大努力!我不能給你一票,因爲我首先需要15個聲望! :/ – bedit 2010-07-27 08:08:52

相關問題