1

HTML5 のアプリケーション キャッシュ機能を使用した簡単な HTML ページを作成しました。

<!DOCTYPE html>
<html manifest="test.appcache">
<head>
  <title>Test</title>    
  <meta name="viewport" content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <!-- App icon for iPad (3rd gen) with retina display -->
  <link rel="apple-touch-icon" sizes="144x144" href="./img/app-icon/apple-touch-icon-144x144.png">
  <!-- App icon for iPhone with retina display -->
  <link rel="apple-touch-icon" sizes="114x114" href="./img/app-icon/apple-touch-icon-114x114.png">
  <!-- App icon for iPad (1st and 2nd gen) -->
  <link rel="apple-touch-icon" sizes="72x72" href="./img/app-icon/apple-touch-icon-72x72.png">
  <!-- App icon for iPhone (non-retina) and Android -->
  <link rel="apple-touch-icon" href="./img/app-icon/apple-touch-icon.png">
  <!-- Favicon for Android browser tabs/bookmarks -->
  <link rel="icon" type="image/png" href="./img/app-icon/favicon.png">  
  <link href="themes/theme1/splash.css" media="screen, projection" rel="stylesheet" type="text/css" />      
  <script src="js/src/vendor/jquery.js" type="text/javascript"></script>        
</head>

<body>
  <h1>TEST PAGE</h1>
  <div id="splash">    
    <div id="splash-logo"></div>
    <ol class="loader"><li></li><li></li><li></li></ol>
    <img id="splash-gtechg2" src="img/logo.png"/>
  </div>    
</body>
</html>

ご覧のとおり、とてもシンプルです。以下は私のマニフェストです:

CACHE MANIFEST
# Modified: Thu Jan 24 12:22:59 2013
#-----------------------------------------------------------------------------
CACHE:
# js/src/vendor
  js/src/vendor/jquery.js

# img/app-icon
  img/app-icon/apple-touch-icon-114x114.png
  img/app-icon/apple-touch-icon-144x144.png
  img/app-icon/apple-touch-icon-72x72.png
  img/app-icon/apple-touch-icon.png
  img/app-icon/favicon.png
#-----------------------------------------------------------------------------
NETWORK:
  *
  http://*
  https://*
#-----------------------------------------------------------------------------
FALLBACK: 
  / offline.html

CSSファイルは次のとおりです。

#splash {
  background-image    : url(img/background.jpg);
  background-position : top left;
}

#splash-logo {
  background-image    : url(img/splash-logo.png);
  background-position : center;
}

ご覧のとおり、テーマ css は appcache に含まれていません。実際のアプリケーションの URL はいつでも変更される可能性があるため、常にネットワークから提供する必要があります。

問題は、サーバーで SSL を有効にすると、CSS ファイルがまったくロードされないことです。HTTP を使用するか、CSS とその画像をマニフェストに配置すると、正常に動作します。これは Mobile Safari でのみ再現されることに注意してください。(私は iOS 6.1 を搭載した iPad3 を持っています)。

再現する手順は次のとおりです。

  1. iPad の Safari でテスト ページを開く
  2. すべてが正常に動作します
  3. Safari を完全に閉じて、最小化ではなく実際に閉じるようにします。
  4. サファリを開きます。
  5. 次に、テスト ページで最後に開いたタブを復元しようとしますが、ここで CSS の読み込みに失敗します。

したがって、基本的には「混合コンテンツの警告」も表示されません-黙ってロードに失敗するだけです。

最初は証明書に問題があると思っていましたが、マニフェスト属性を削除するとすぐにすべて正常に動作します。

数日間解決策を見つけようとしていますが、私が試したことはすべてうまくいかないので、ここで質問することにしました. これを解決する方法はありますか?

更新 1:これは、iOS 用の Chrome 23.0.1271.100 で正常に動作します。

更新 2: Adob​​e にバグを報告し、当面は appcache をオフにします

4

0 に答える 0