2010-07-26 102 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

相关问题