0

オフライン HTML5 機能を使用して Web アプリケーションをキャッシュしています。

正常に動作する場合もありますが、奇妙な動作をする特定の状況があります。その理由と、どうすれば直せるかを考えています。

私はサミーを使用していますが、それが関係していると思います。

うまくいかないときはこちら

  • 自分のページを閲覧http://domain/App 注: /App の後にスラッシュを含めていません
  • その後、サミーによって http://domain/App/#/ にリダイレクトされます
  • すべてがキャッシュされます (画像を含む)
  • オフラインにします。これには仮想マシンを使用しているため、仮想ネットワーク アダプターを取り外します。
  • ブラウザを閉じます
  • ブラウザを再度開き、自分のページhttp://domain/App/#/を参照します
  • 画像以外のコンテンツが表示されている
  • ステップ 1でスラッシュを含めてhttp://domain/App/を参照すると、すべて正常に動作します。

    sammy ルートが呼び出されない場所に入る奇妙な状態が他にもいくつかあるため、ページは空白のままですが、それを確実に再現することはできませんでした。

    ??

    更新: 問題は、上記の手順が以前に問題を引き起こしたことです。上記の手順を実行すると動作するようになったため、正確に何が起こっているのかを言うのは困難です. VM 内のスナップショットから開始しているため、毎回一貫した状態から開始しています。

    私のキャッシュマニフェストは次のようになります。

    CACHE MANIFEST
    
    javascripts/jquery-1.4.2.js
    javascripts/sammy/sammy.js
    javascripts/json_store.js
    javascripts/sammy/plugins/sammy.template.js
    
    stylesheets/jsonstore.css
    
    templates/item.template
    templates/item_detail.template
    
    images/1Large.jpg
    images/1Small.jpg
    
    images/2Large.jpg
    images/2Small.jpg
    
    images/3Large.jpg
    images/3Small.jpg
    
    images/4Large.jpg
    images/4Small.jpg
    
    index.html
    
    4

    1 に答える 1

    0

    私も同様の問題に遭遇しています。

    問題の一部は、jquery ajax が応答を誤解していることだと思います。サミーはjqueryを使用してajax呼び出しを行っているため、エラーが発生していると思います。

    これをテストするために使用したコードスニペットを次に示します(ただし、解決策ではありません)

    this.get('#/', function (context) {
    
        var uri = 'index.html';
    
        //  what i'm trying to call
        context.partial(uri, {});// fails on some browsers after initial caching
    
        //  show's that jquery's ajax is misinterpreting
        //  the response
        $.ajax({
            url:uri,
            success: function(data, textStatus, jqXHR){
                alert('success')
                alert(data);
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert('error')
                if(jqXHR.status == 0){  //  this is actually a success
                    alert(jqXHR.responseText);
                }else{
                    alert('error code: ' + jqXHR.status)    // probably a real error
                }
            }
        });
    
    于 2012-05-20T02:11:18.217 に答える