#javascript #safari #dom-events
#javascript #safari #dom-события
Вопрос:
Мой Javascript использует таймер для обновления CSS страницы. Мне нравится запускать его, когда Safari работает в фоновом режиме, и я вношу изменения в свой редактор кода, но я не хочу, чтобы он запускался, когда его нет на активной вкладке браузера.
window.blur
и window.focus
срабатывают, когда другая вкладка находится в фокусе, но они также срабатывают, когда вкладка активна, а Safari работает в фоновом режиме, поэтому они мне здесь не помогают.
Как мне определить, активна ли в данный момент вкладка, на которой запущен мой Javascript?
Ответ №1:
У W3C есть рабочий проект для отслеживания именно этой ситуации: API видимости страницы. Похоже, Chrome — единственный браузер, который его поддерживает, в настоящее время с экспериментальным API. Вы можете попробовать это с помощью этой небольшой функции в консоли веб-инспектора:
function tattle() {
console.log(document.webkitVisibilityState);
}
document.addEventListener("webkitvisibilitychange", tattle, false);
Поиграв с этим, я думаю, что это именно то, что мне нужно. В основном документ.Значение webkitHidden равно false только в том случае, если документ находится на активной вкладке его окна, независимо от того, активны ли другие окна или приложения.
Комментарии:
1. прочитав страницу Chrome, на которую ссылается ссылка, я думаю, что обнаружил ошибку. в нем указано, что <q>
document.webkitHidden
Возвращает true, если страница находится в состоянии, которое считается скрытым для пользователя, и false в противном случае. <q>. в этом ответе говорится, что это верно, если документ является активной вкладкой в его окне, тогда как на самом деле это было бы ложью.
Ответ №2:
Здесь есть некоторая документация: https://developer.apple.com/documentation/safariextensions
Комментарии:
1. Они доступны только для расширений Safari
Ответ №3:
попробуйте что-то вроде onmouseover..