1

現在、HTML5を使用したオフラインWebアプリケーションに焦点を当てています。ユーザーの接続をチェックして、ユーザーが現在オンラインかオフラインかを判断するための信頼できる方法が必要になるようになりました。navigator.onLineプロパティの信頼性が非常に低いことを知ったので、キャッシュマニフェストのフォールバック領域を使用する非常に優れたメソッドを見つけました。2冊の異なる本から2つの同様のソリューションを実装しました。1つは「IntroducingHTML5」(Lawson / Sharp)で、もう1つは「HTML5:The MissingManual」(MacDonald)です。これはHTTPキャッシング(私はApacheとlocalhostを使用しています)の問題だと思いますが、私はあまりよく知りません。コードを貼り付けました。ファイルは数個ですが、コードはごくわずかです。

HTML5の紹介からの適応ソリューション:http: //pastebin.com/UGsmnAtK

HTML5からの適応ソリューション-不足しているマニュアル:http: //pastebin.com/8v5ck3E6

Chrome16でテスト済み...

===欲しいもの===

  • 空のキャッシュと実行中のapacheでアプリを起動します
  • ボタンをクリック->アラート「オンライン」が表示されます
  • Apacheを停止します
  • ボタンをクリック->アラート「オフライン」が表示されます
  • Apacheを開始します
  • ボタンをクリック->アラート「オンライン」が表示されます

===何が起こるか===

HTML5ソリューションの紹介:-空のキャッシュでアプリを起動し、apacheを実行します-ボタンをクリックします->アラート「オンライン」が表示されます-apacheを停止します-ボタンをクリックします->アラート「オンライン」が表示されます-apacheを開始します-ボタンをクリックします->アラート「オンライン」が表示されます

HTML5:不足している手動ソリューション:-空のキャッシュでアプリを起動し、apacheを実行します-ボタンをクリックします->アラート「オンライン」が表示されます-apacheを停止します-ボタンをクリックします->アラート「オンライン」が表示されます-apacheを開始します-ボタンをクリックします->アラート「オンライン」が表示されます

他のシナリオとユースケースも同様に失敗します。本はあなたが彼らの方法を使っていつでもユーザーの接続性をチェックできることを約束します。だから私はここで何か間違ったことをしていると思います。ありがたいことに、このトピックに関するアイデアを受け入れたいと思います。

乾杯、フェリックス

4

1 に答える 1

2

問題は、Introducing HTML5 でボタンをクリックしたとき、またはページが HTML5 で読み込まれたときに、online.js が読み込まれることです。手動コードが欠落しており、サイトは Apache を介して利用できます。スクリプトは既にブラウザーのキャッシュにあるため、次回は読み込まれません。

スクリプト URL にランダムな値を追加すると、 HTML5の紹介のコードが機能するように見えます。何かのようなもの:

function testOnline(fn) {
    var script = document.createElement('script');
    script.src = 'online.js?r=' + Math.random();

    window.setOnline = function(online) {
        document.body.removeChild(script);
        fn(online);
    }

    document.body.appendChild(script);
}
于 2011-12-19T14:22:23.190 に答える