11

問題

ページの読み込みが遅いことをユーザーに通知するためのスクリプトを作成しました (たとえば、インターネット接続が遅いためです)。スクリプトは の最初に置かれ、<head></head>非常に単純です。

var GLOBAL_TIMEOUT = setInterval(function () {      
    alert("The Internet connection is slow. Please continue waiting.");
}, 30000);

//clear that interval somewhere else when document is ready
$(function () {
    clearInterval(GLOBAL_TIMEOUT);
});

質問

現在の例では、情報は単純に警告されます。jsページの読み込みが遅いことをユーザーに通知する他の方法はありますか(特にcss、頭の中のファイルが非常に大きく、読み込みに時間がかかる場合)。私はDOMを操作しようとしました(私の意見では、ドキュメントの準備が整う前に行うのは正しいことではありませんdocument.bodynull.

追加

インターバルを設定した解決方法はこちらから。それを行う方法の他のアイデアは大歓迎です。

4

5 に答える 5

1

可能な(ただし、少し面倒な解決策):

ページを iFrame に読み込み、ready イベント リスナーを iFrame にアタッチします。これを行う方法の例を次に示します

動的に挿入された iframe 内の jQuery .ready

このようにして、外側のページの DOM を制御し、同時に iFrame の読み込み時間を監視できます。

于 2013-09-06T05:45:36.267 に答える
0

Document-Ready は、DOM が読み取られたことを意味します。これを使用して、Document-Ready の直前でコードを実行できます。

   ...
  </body>
  <script>window.clearInterval(GLOBAL_INTERVAL);</script>
</html>

これはより低レベルです。ここでは jQuery を使用しないでください。

于 2013-09-06T05:45:51.103 に答える
0

ええと、数時間脳を傷つけた後、解決に至りました。これは、技術革新というよりはユーザー エクスペリエンスの向上に関するものですが、私のニーズには合っています。

<script></script>はまだ の一番上にあり、<head></head>30 秒ごとにユーザーにページにとどまり、ロードされるまで待機するかどうかを尋ねます。ユーザーが拒否した場合、ウィンドウは閉じられ、それ以外の場合は読み込みが続行されます。スクリプトは次のようになります。

(function () {
   var SLOW_CONNECTION = setInterval(function () {
      if (!confirm("The Internet connection speed is low. Do you want to continue waiting?")) {
         var win = window.open("", "_self");
         win.close();
      }
   }, 30000);
   window.addEventListener("load", function () {
      clearInterval(SLOW_CONNECTION);
   });
})();
于 2013-09-06T13:05:19.847 に答える
0

を確認してみてはどうでしょうかdocument.readyState

  setTimeout(function(){ 
    //after 3 seconds if the document is still not ready the alert will appear
    if(document.readyState=="loading")
     alert("The Internet connection is slow. Please continue waiting.");},3000);

  $(function () {
       alert("document ready");
  });

https://developer.mozilla.org/en-US/docs/Web/API/document.readyState?redirectlocale=en-US&redirectslug=DOM%2Fdocument.readyState

于 2013-09-06T05:53:33.357 に答える