Обнаружить, если нет активности системы из браузера (включая действия вне браузера) - PullRequest
3 голосов
/ 18 сентября 2010

Мне нужно определить, нет ли активности пользователя в системе (например, что делает скринсейвер) - все из веб-браузера.

Насколько я знаю, это невозможно сделать, используя чистый JavaScript. В браузере есть библиотека для детективного ввода в режиме ожидания: jquery-idletimer-plugin

Для событий простоя системы я думаю, что ActiveX control или SilverLight.

Кто-нибудь делал это раньше? Любые рекомендации?

ОБНОВЛЕНИЕ : Я думаю, что разумным решением было бы иметь вспомогательное приложение, которое работает на компьютере пользователя и отправляет в браузер события простоя. Таким образом, новый вопрос заключается в том, как я могу отправить сообщение в открытый браузер (на основе webkit, с моим открытым веб-приложением) из приложения Windows, чтобы его можно было получить из JavaScript?

Ответы [ 3 ]

3 голосов
/ 18 сентября 2010

Не будет надежного способа сделать это когда-либо . Как сказал Денис, вы не можете сделать это с Silverlight, а ActiveX работает только в Internet Explorer, поэтому в случае, если это важная часть вашего приложения, вам лучше иметь действительно веских причин чтобы я использовал его, иначе зачем мне запускать IE (и машину с Windows в моем случае)?

Черт, даже если бы я использовал IE, зачем мне открывать сайт, который отслеживает активность ВНЕ моего браузера? Кто сказал мне, что вы не регистрируете мои нажатия клавиш одновременно, да?

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

Итак, чего бы вы ни пытались достичь с помощью этого, пожалуйста, откажитесь от него и найдите лучшее решение, которое A: Работает в кросс-браузерной / платформенной среде и B: Не делает ваше приложение таким, чтобы оно могло украсть мои пароли день.

1 голос
/ 18 сентября 2010

Если вам это действительно нужно, (я надеюсь, что это для клиента, который запросил такую ​​функцию), вы должны написать свой собственный браузер (C # позволяет вам просто отбросить элемент управления веб-браузера на форму только с требуется небольшая настройка) и пусть ваши пользователи используют этот браузер (который затем можно использовать для определения состояния простоя с помощью функций операционной системы.

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

0 голосов
/ 19 марта 2012

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

С JS выможно установить тайм-аут на конкретное время, например 640000 на 10 минут.Затем отменяйте таймаут каждый раз, когда происходит взаимодействие со страницей (щелчок, прокрутка и т. Д.), И устанавливайте его снова.Если пользователь перестает взаимодействовать со страницей в течение 10 минут, тогда может быть выполнено предупреждение или функция.Либо закрытие сеанса с помощью ajax, либо просто оповещение.

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

Надеюсь, что это дает представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...