<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как определить скрытие веб-страницы из-за наложения на мобильных устройствах?

Как определить скрытие веб-страницы из-за наложения на мобильных устройствах?

Определить, скрыта ли веб-страница из-за наложения, например, системного уровня на мобильном устройстве (уведомление о входящем звонке, управление громкостью или переключение приложений), может быть непросто. API видимости страницы (Page Visibility API, document.visibilityState) обычно не обнаруживает такие случаи, так как страница технически остается "видимой" для браузера.

Почему visibilityState может не работать

  • Системные наложения не обязательно вызывают событие visibilitychange, так как страница всё ещё считается "видимой" для браузера.
  • Браузер может не распознавать такие наложения как изменение состояния видимости страницы.

Альтернативные подходы

Для обнаружения таких ситуаций можно использовать косвенные методы, такие как мониторинг взаимодействий пользователя, фокусировки окна или тайминговых механизмов. Вот несколько стратегий:

1. Обнаружение потери фокуса

Отслеживайте события window.onblur и window.onfocus. Эти события могут срабатывать, когда появляется или исчезает системное наложение, хотя это зависит от типа наложения и поведения браузера.

let isHiddenByOverlay = false;

window.addEventListener('blur', () => {
  console.log('Страница может быть скрыта наложением.');
  isHiddenByOverlay = true;
});

window.addEventListener('focus', () => {
  console.log('Страница снова активна.');
  isHiddenByOverlay = false;
});

2. Тайм-аут активности

Отслеживайте взаимодействие пользователя (например, движения мыши, касания или нажатия клавиш). Если в течение разумного времени не происходит взаимодействий, а visibilityState остаётся "видимым", можно предположить наличие наложения.

let lastActivityTime = Date.now();

const resetActivityTimer = () => {
  lastActivityTime = Date.now();
};

document.addEventListener('mousemove', resetActivityTimer);
document.addEventListener('touchstart', resetActivityTimer);
document.addEventListener('keydown', resetActivityTimer);

setInterval(() => {
  if (Date.now() - lastActivityTime > 10000 && document.visibilityState === 'visible') {
    console.log('Страница может быть скрыта наложением или неактивна.');
  }
}, 5000);

3. Изменения CSS и события изменения размеров

Некоторые наложения могут вызывать изменения в области просмотра или макете страницы. Отслеживайте события resize и наблюдайте за необычными изменениями.

window.addEventListener('resize', () => {
  console.log('Область просмотра или макет могли измениться.');
  // Дополнительная логика для обнаружения наложений
});

4. Использование requestAnimationFrame (для анализа производительности)

Можно измерять частоту кадров или отзывчивость анимаций. Значительное падение частоты кадров может указывать на наложение, влияющее на рендеринг.

let lastFrameTime = Date.now();

const detectOverlay = () => {
  const now = Date.now();
  if (now - lastFrameTime > 500) { // Обнаружение задержек кадров
    console.log('Возможно, обнаружено наложение (низкая отзывчивость).');
  }
  lastFrameTime = now;
  requestAnimationFrame(detectOverlay);
};

detectOverlay();

Комбинирование подходов

Для большей надежности объедините несколько сигналов, таких как: - Отсутствие взаимодействия с пользователем - События blur - Падение частоты кадров - Отсутствие значительных обновлений контента

Ограничения

  • Нет полной гарантии: Эти методы дают лишь косвенные признаки, но не являются абсолютно точными из-за разнообразия наложений на устройствах и браузерах.
  • Системные наложения: Некоторые наложения полностью находятся вне контроля браузера и не могут быть обнаружены программно.

Если эти методы не полностью соответствуют вашим потребностям, можно рассмотреть возможность подачи запроса на улучшение браузеров, чтобы расширить возможности visibilityState для таких случаев.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.