Как я могу использовать JavaScript, чтобы определить продолжительность анимации? - PullRequest
0 голосов
/ 07 мая 2020

Я попытался проверить соединение inte rnet, чтобы люди не оставались на экране загрузки слишком долго, и я не нашел для этого хорошего метода. Есть ли способ выяснить, как долго длилась анимация загрузки и превышает ли она x секунд / минут, чтобы отобразить предупреждение для проверки соединения? Я знаком с JavaScript и некоторыми библиотеками и открыт для других языков, просто хочу, чтобы работа была выполнена. Спасибо!

PS: Ниже приведен код и анимация, которые у меня используются в качестве экрана загрузки, и поскольку, если он не подключается к jQuery CDN, он не загружается, я хочу уменьшить время, которое люди тратят на сказал экран.

$(window).on('load', function() {
  $('.loader').delay(1000).fadeOut(500);
  $('.page_cover').delay(1000).fadeOut(500);
  $('.load-txt-cont').delay(1000).fadeOut(500);
});
body,
html {
  margin: 0;
  padding: 0;
  border: none;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: #ffffff;
  background-color: #3b404d;
  font-family: 'Raleway', Arial, Helvetica, sans-serif;
  overflow-x: hidden;
  scroll-behavior: smooth;
  outline: none;
}

.page_cover {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 10;
  width: 100vw;
  height: 100vh;
  background-color: #3b404d;
  display: flex;
  justify-content: space-around;
  align-items: center;
  text-align: center;
}

.conet-cont {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  align-items: center;
  font-size: 19.2px;
}

.loader {
  width: 115.2px;
  height: 115.2px;
  border-radius: 100%;
  border: 4.8px solid #fff;
  z-index: 10;
  animation: load 1.25s linear infinite alternate;
  -webkit-animation: load 1.25s linear infinite alternate;
  -ms-animation: load 1.25s linear infinite alternate;
  -moz-animation: load 1.25s linear infinite alternate;
  -o-animation: load 1.25s linear infinite alternate;
}

@keyframes load {
  0% {
    transform: scale(0);
  }
  100% {
    transform: scale(1);
  }
}

@-webkit-keyframes load {
  0% {
    transform: scale(0);
  }
  100% {
    transform: scale(1);
  }
}

@-ms-keyframes load {
  0% {
    transform: scale(0);
  }
  100% {
    transform: scale(1);
  }
}

@-moz-keyframes load {
  0% {
    transform: scale(0);
  }
  100% {
    transform: scale(1);
  }
}

@-webkit-keyframes load {
  0% {
    transform: scale(0);
  }
  100% {
    transform: scale(1);
  }
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Code Cafe | Home</title>
  <link href="https://fonts.googleapis.com/css?family=Raleway|Playball|Lobster+Two" rel="stylesheet" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="main.js"></script>
  <style>
    @font-face {
      font-family: 'Ballet Harmony';
      src: url('ballet_harmony-webfont.woff2') format('woff2'), url('ballet_harmony-webfont.woff') format('woff');
      font-weight: normal;
      font-style: normal;
    }
  </style>
</head>

<body>
  <div class="page_cover">
    <div class="conet-cont">
      <h2 class="load-txt">Preparing everything for you...</h1>
        <div class="loader"></div>
    </div>
  </div>
<h1>Loaded Content</h1>
</body>

1 Ответ

2 голосов
/ 07 мая 2020

Запрос выглядит как проверка сетевого подключения через определенное время.

Простое сетевое подключение можно определить с помощью свойства Navigator.onLine .

let online = navigator.onLine;

Чтобы использовать временную задержку перед информированием пользователя, вы можете использовать функцию setTimeout () .

let timeout = setTimeout(myTimeoutHandler, 5000);

Очень простой пример, который проверяет соединение через 5 секунд, показывая предупреждение, если нет соединения:

setTimeout(() => {
  if (!navigator.onLine) {
    alert('no network connection');
  }
}, 5000);

Но возникает вопрос, насколько хороша поддержка браузером navigator.onLine?

Согласно caniuse.com , поддержка неплохая.

browser support for navigator.onLine

Обновление

Исходный код пытается загрузить jQuery из CDN, поэтому простой поиск наличия jQuery определит возможность подключения.

setTimeout(() => {
  if (typeof window.jQuery !== 'function') {
    alert('jQuery not loaded');
  }
}, 5000);

Пример для демонстрации.

function testForJquery() {
  setTimeout(() => {
    if (typeof window.jQuery !== 'function') {
      alert('jQuery not loaded');
    } else {
       alert('jQuery is loaded');
    }
  }, 1000);
}

function loadJQuery () {
  let script = document.createElement('script');
  script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js';
  document.body.appendChild(script);
}
<body>
<h4>Test for jQuery</h4>
<button onclick="loadJQuery();">Load jQuery</button><br/>
<button onclick="testForJquery();">Test for jQuery</button><br/>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...