レコード処理モバイルブラウザクリックしてページを更新しない

10430 ワード

一部のブラウザでは、戻るボタンはキャッシュを直接使用し、jsコードは実行されません.たとえば、コミット時にボタンをloading状態に設定し、コミットに成功した後にボタンを処理しなかった場合、戻るボタンがloading状態のままであることは気まずいです.
理由:一部のブラウザでは、後退時にonloadイベントはトリガーされません.これはHTML 5世代ブラウザの新しい特性の一つであるBack-Forward Cache(bfcacheと略称)です.
bfcacheとは
「JavaScript Advanced Program」では、bfcacheについて説明しています.
bfcache、すなわちback-forward cacheは、「往復キャッシュ」と呼ばれ、ブラウザの「後退」ボタンと「前進」ボタンを使用すると、ページの変換速度を速めることができます.このキャッシュはページデータだけでなく
DOMとJSの状態も保存されており、実際にはページ全体をメモリに保存している.ページがbfcacheにある場合、再びページを開くとonloadイベントはトリガーされません.
pageshowイベントこのイベントは、bfcacheからのページであるかどうかにかかわらず、ページ表示時にトリガーされます.再ロードされたページでは、pageshowはloadイベントがトリガーされた後にトリガーされます.
bfcacheのページではpageshowがページ状態が完全に回復した瞬間にトリガーされます.
pagehideイベントブラウザがページをアンインストールするとトリガーされ、unloadイベントの前にトリガーされます.
persistedプロパティpageshowイベントとpagehideイベントのeventオブジェクトには、persistedというブール値プロパティも含まれます.
pageshowイベントの場合、ページがbfcacheからロードされている場合、このプロパティの値はtrueです.そうでなければ、この属性の値はfalseです.pagehideイベントの場合、ページがアンインストール後にbfcacheに保存されている場合、このプロパティの値はtrueです.そうでなければ、この属性の値はfalseです.ブラウザによっては、現在のウィンドウの「開く」履歴の前のページの表現が統一されず、ブラウザの実装やページ自体の設定に関係します.
ソリューションFirefoxの開発者ドキュメントには、次のようなアイデアが用意されています.
ページはunloadまたはbeforeunloadイベントを傍受しています.ページには「cache-control:no-store」が設定.HTTPS同時ページは、「Cache-Control:no-cache」「Pragma:no-cache」設定要求ヘッダ「Expires:0」または「Expires」の値が「Date」の前の値(Cache-Control:max-age=」も設定されていない限り)を満たすのに十分です.ページは、ユーザーが後退したときに完全にロードされていないか、XMLHttpRequestなどのネットワーク要求があります.ページはIndexedDB操作中です.最上位のページパッケージにはframeが含まれており、これらのframeはここに列挙されているいずれかの理由でキャッシュできません.ページは1つのframe内にあり、ユーザーはこのframe内で新しいページにジャンプし、ここでキャッシュされるのは新しくロードされたページJSがpageshowイベントを傍受してbfcacheにページが入ることを阻止する(個人的にはこの方法を使用する)
window.addEventListener('pageshow', function( e ){
    if (e.persisted) {
        window.location.reload()
    }
})

Safari、UC、qqブラウザのテストに合格しました.しかし、UC、qqブラウザはbfcacheのページを先にフラッシュします.pageshowはloadイベントがトリガーされた後にトリガーされるからです.browserは依然として赤色を保持しています.browserが前のページに戻ったときにイベントがトリガーされないからだと思います.JSはpagehideイベントを傍受してページがbfcacheに入ることを阻止する
window.addEventListener('pagehide', function(e) {
    var $body = $(document.body);
    $body.children().remove();
    //          ,        script     
    setTimeout(function() {
        $body.append("window.location.reload();<\/script>"</span>);
    });
});</code></pre> 
  <p>Safari、UC、qq       。browser       ,      browser            。</p> 
  <p>     http://blog.csdn.net/playboyanta123/article/details/70313112 </p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC WAP    -->
                    <div id="SOHUCS" sid="1282710712510070784"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js">
                    
                     
                
興味があるかもしれません
  • ASMシリーズ6 TreeApiによるクラスメンバーの追加と削除
    lijingyao8206
    jvm ダイナミックエージェント ASM バイトコード技術 TreeAPI
  • Springmvc-パーミッション設計
    bee1314
    spring Web jsp
  • アルゴリズムコンテスト入門経典(第2版)第2章練習問題
    CrazyMizzz
    c アルゴリズム#アルゴリズム#
  • struts 2でjspが自動的にActionにジャンプ
    麦畑の設計者
    jsp webxml struts2 じどうジャンプ
  • php操作webserviceインスタンス
    IT独行者
    PHP webservice
  • WindowsでVagrantを使用してlinuxシステムをインストールする
    _wy_
    windows vagrant
  • linuxのファイル所有者およびユーザーグループ(chownおよびchgrp)の変更
    むりょう
    c linux chgrp chown
  • linux下パッケージツール
    矮蛋
    linux
  • アルファベットで分類:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他
    トップページ -
    私たちについて -
    構内検索 -
    Sitemap -
    権利侵害苦情
    著作権すべてのIT知識ベースCopyRight© 2000-2050 IT知識ベースIT 610.com , All Rights Reserved.
    京ICP備09083238号