2012-06-19 2 views
-1

У меня есть эта функциональность, встроенная в JQuery/javascript, где пользователь уведомляется о том, что время ожидания их сеанса. Затем им предоставляется возможность расширить его. Если они не делают выбор, всплывающее окно закрывается и браузер перенаправляется на страницу входа. Некоторое время он работал отлично. Но теперь я заметил, что он работает правильно, только если я активен на компьютере. Если компьютер оставлен без присмотра на целый день, всплывающее окно не начнет обратный отсчет до тех пор, пока пользователь не разблокирует компьютер и не войдет в систему снова.Входит ли IE в спящий режим?

Знает ли кто-нибудь об этом поведении, когда, например, прекращается выполнение javascript, когда компьютер остается без присмотра в течение длительного времени?

Обновление: Есть ли способ удержать вкладку от сна? Без этого браузер не сможет перенаправить в нужное время.

+0

Вы реализовали эффект, используя 'setTimeout'? –

+0

Я заметил такое же поведение с Chrome, как-то «зависает» от javascript, когда он находится в фоновом режиме. – Adi

+0

Rob: Да, я использовал функцию javascript setTimeout. – developer747

ответ

0

Я бы предложил регистрировать текущее время загрузки страницы, а затем вызывать функцию каждые 10 секунд, чтобы проверить, превышает ли время, превышающее количество х, причина, по которой возникает ваша проблема, скорее всего, потому что тайм-аут по умолчанию функция только подсчитывает, пока страница отображается.

+0

Я не понимаю, почему вы получили голосу за это. Это может быть изменено дальше, но общая идея использования 'setInterval' вместо этого для сравнения времени datetime намного надежнее и отвечает на этот вопрос. Редактировать: typo – Geekfish

+0

Luka, Это был не я, который проголосовал за вас. – developer747

+1

Меня не волнует моя репутация, я просто хочу помочь: p – Luka

1

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

How can I make setInterval also work when a tab is inactive in Chrome?

Вы можете захотеть сделать две проверки на Шло время, один, чтобы проверить, если вам нужно, чтобы показать всплывающее окно и одно, чтобы закрыть всплывающее окно, используя общее время, прошедшее вместо другого обратного отсчета.

+0

Даже если я проверю пройденное время, javascript должен быть в состоянии выполнить в нужное время, чтобы перенаправить пользователя на страницу входа. С javascript в приостановленном режиме проверка времени не решит мою проблему :( – developer747

+0

Вы не можете перенаправить, если страница неактивна, вы не должны ожидать, что браузер сделает это. Если ваш интервал примерно как раз каждые две секунды (если это небольшая проверка не будет дорогой для производительности), тогда перенаправление произойдет, как только пользователь вернется на вкладку. – Geekfish

+0

Что означает «правильное время»? В любом случае, если ваша забота - это безопасность, тогда вы должны спросить себя, ваш сервер также синхронизирует сеанс независимо от любых вызовов javascript.Если это тогда, я не вижу никаких последствий для безопасности, если не тогда ваша проблема лежит где-то в другом месте. – Geekfish

Смежные вопросы