2011-12-19 11 views
1

私は現時点でHTML5のオフラインWebアプリケーションに注目しています。私は現時点でオンラインかオフラインかを判断するためにユーザーの接続を確認する信頼できる方法が必要なところに来ました。 navigator.onLineプロパティの信頼性が非常に高いことを知ったので、キャッシュマニフェストのフォールバック領域を使用すると非常に優れたメソッドが見つかりました。私は「HTML5の紹介」(Lawson/Sharp)と「HTML5:The Missing Manual」(MacDonald)という2つの異なる書籍から2つの同様のソリューションを実装しました。私はこれがHTTPキャッシング(私はApacheとlocalhostを使っている)の問題だと思います。私はコードを貼り付けましたが、それは少数のファイルですが、コードはほとんどありません。私が欲しいものクローム16でテスト http://pastebin.com/8v5ck3E6HTML5:マニフェストフォールバックを使用してユーザーの接続性を確認する

...

===: - :

HTML5の紹介から適応ソリューション欠落しているマニュアル http://pastebin.com/UGsmnAtK

HTML5から適応ソリューションを===

  • 空のキャッシュと実行中のapacheで起動アプリ
  • ボタンをクリック - >警報 "オンライン" に示されているが
  • 停止apacheの
  • ボタンをクリック - >警報 "オフライン" に示されているが
  • スタートのapache
  • ボタンをクリックしてください - >警告 "オンライン"何が起こる===

    はHTML5ソリューションの紹介===

を示している: を - 空のキャッシュでアプリを起動し、Apacheを実行していますは、 - ボタンをクリックしてください - >警報「オンライン」 を示している - - apacheの を停止 - - ボタンをクリックしてください>警報「オンライン」 示されているApacheの を開始 - ボタンをクリック - >警報「オンライン」に示されている

HTML5:欠落しているマニュアルソリューション: - 空のキャッシュと実行しているapacheの でアプリを起動 - >警報「オンライン」 示されている - - apacheの を停止 - ボタンをクリックして - ボタンをクリックしてください>警告「オンライン」 を示しています - 起動apache - ボタンをクリック - >警告 "オンライン"が表示されます

他のシナリオやユースケースも同様に失敗します。この本では、いつでもそのメソッドを使ってユーザーの接続性をチェックできることを約束しています。だから私はここで何か間違っていると思う。私は感謝してこのトピックに関するアイデアを受け入れます。

乾杯、 フェリックス

問題は、あなたが紹介HTML5やでボタンをクリックしたときにonline.jsがロードされていることである

答えて

2

ページはHTML5でロードされたとき - 行方不明マニュアルコードとサイトで入手可能ですApacheを通して。次回は、スクリプトが既にブラウザキャッシュにロードされているため、ロードされません。

Introducing HTML5のコスは、スクリプトURLにランダムな値を追加するとうまくいくようです。ような何か:

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); 
} 
+0

こんにちはモーリスは、あなたが本当に私をたくさん助け、あなたの答えのためにどうもありがとうございました!私はちょうどクエリ文字列を追加しようとし、それは実際に動作します!ボタンをクリックするたびに、「online.js」のGETリクエストが呼び出されます。たぶん、私は一般的に、これらのApacheテクニックについてもっと学ぶべきです。最初の投稿stackoverflow、すぐに成功! Cheers、Felix – Felix

+1

こんにちはフェリックス、これに関する特定のApacheはありません、私はちょうどブラウザによってキャッシュされているonline.jsを避けるためにURLをわずかに変更しました。この問題に遭遇した他の人を助けるための答えとして受け入れてください。 – Maurice

関連する問題