6

Google Chrome または Android (2.1) Web ブラウザーに問題があります。

私の Web アプリケーションは、各ページ シフトで restservices を呼び出します。これには時間がかかるため、「作業中...」という小さな popup のようなユーザーへのフィードバックが必要です。restservices は、同期 ajax 要求で呼び出されます。次に例を示します。

$.ajax({
    url: 何らかの URI、
    非同期: 偽、
    beforeSend: 関数() {
        showIndicatorDialog();
    }、
    完全: 関数() {
        hideIndicatorDialog();
    }、
    成功: 関数 (応答) {
        成功した後に何かをする。
    }、
    エラー: 関数 (応答) {
        エラーの後に何かをします。
    }、
    タイプ: 'GET'
});

それはFFとOperaでうまく機能します!しかし、Android デバイスを使用して Chrome または Chrome で Web アプリケーションにアクセスすると、読み込みインジケータが表示されません。Google ブラウザは同期リクエストで動作しないようです。

誰かがこれを機能させる方法を知っていますか、またはクロムで読み込みインジケーターを取得する別の解決策を知っていますか??

4

2 に答える 2

8

解決策は、同期リクエストを使用しないことです。一般に、同期リクエストは、ページ上の他の処理 (またはブラウザー UI 全体) の実行をブロックする傾向があるため、決して使用しないでください。これは良くありません。

于 2010-07-26T15:10:30.150 に答える
3

読み込みインジケーターがGoogleChrome(デスクトップ)にも表示されない、またはAndroidデバイス用のモバイルGoogle Chrome Liteブラウザーだけに表示されないということですか?最新バージョンのjQueryを使用している場合は、すべてのデスクトップブラウザで動作するはずです。モバイルブラウザは、インターフェイスデザインが大幅に異なるため、十分にサポートされていません。また、完全なブラウザではないため、多くのブラウザは完全に機能するJSサポートを備えていません。

とはいえ、Chrome LiteのjQueryに関する問題については聞いたことがありません。Androidプラットフォームで最も印象的なことの1つは、モバイルプラットフォームに完全に機能するブラウザが含まれていることです。しかし、モバイル版のjQueryが利用可能であるか、作業中だと思います。したがって、他のすべてが失敗した場合は、それを試すことができます。

モバイルブラウザでのJavaScript/jQueryサポートの概要については、次のGoogleグループの投稿を参照してください: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リクエストを使用しましたが、これはgetリクエストでも同様に機能するはずです。テストするAndroidスマートフォンを持っていませんが、GoogleChromeでは正常に動作します。

于 2010-07-26T15:20:03.457 に答える