Comments 49
А еще благодоря этой библиотеке можно делать нехорошие вещи, например, пока пользователь не видит, перезагрузить содержимое таба, чтобы страница выглядила как PayPal. Пользуйтесь NoScript…
+7
майнер бит-бабок запустить, например… Ещё идеи? :-)
+1
Что мешает сразу рендерить фишинговую страницу? Что-то юзкейса не понял…
+8
ну как это… допустим ты читал новости на сайте N, и отправлял бабло в PayPal'e, затем тебе пришло письмо, пока ты его читал — страничка на сайте N подменилась, подменилась и иконка, и ты, ничего не подозревая возвращаешься в «псевдо» PayPal и как ни в чем ни бывало пытаешься снова залогиниться, ан-нет, не получится, ведь это ненастоящий PayPal :) примерно это имел ввиду Scorpil в своем сообщении выше.
+2
Сертификат тоже «подменился»? :-) Хотя да, если с этой точки зрения рассматривать, то атака возможна… очень специфическая и сомнительная.
+1
ну о каком еще сертификате может идти речь, если вы 2 минуты назад были на пайпале, и почитав письмо, вернулись на него. Какой еще сертификат, что же вы смешите?) да вы на строку браузера наврядли взглянете то, не говоря уже о составе страницы, и текущем протоколе (http/https).
0
Вы не вернётесь — вы читали в другом табе же. Вам нужно вручную переключиться на другой таб. Тем более надо очень точно подгадать момент.
0
… И это уже будет именно психологический фактор, т.к. фактически вы и не были знакомы ранее с такими способами обмана, и не подозревали о таком. Ответьте мне на вопрос пожалуйста, смОтрите ли вы на строку браузера, выбирая в списке табов лишь нужный таб по иконке/заголовку и далее после клика — по содержимому страницы?
+1
небольшое уточнение: "… смОтрите ли вы на адресную строку браузера..."
0
Учитывая то, что строка находится сразу под табами — на нее тяжело не взглянуть, а уж тем более не заметить то, что url разительно отличается от paypal.com. Плюс сертификат — не проверить есть ssl или нет перед транзакцией это просто тупо. Хотя наверняка есть люди которые этого не делают, не спорю :-)
0
Кстати, как к этому относятся концепт-дизайнеры Chrome и FF? Ведь, они вообще собираются убрать адресную строку из браузера.
0
Единственное нарушение безопасности, которое сейчас выглядит адекватным — это сбор большей статистики, о том, как вы пользуетесь сайтом. Плюс, иногда можно понять, что это один и тот же пользователь просматривает два сайта — если он будете переключать из одного сайта в другой (но есть более простые способы это узнать) — в общем проблем с безопасностью я тут пока не вижу.
0
«Единственное нарушение безопасности, которое сейчас выглядит адекватным — это сбор большей статистики, о том, как вы пользуетесь сайтом»
То что многие веб-разработчики и сами иногда не прочь поставить всякие лайвинторнеты, яндекс-метриксы, и прочие счетчики на свой сайт, это ничего, а то что какой-то сайт тупо собирает вашу активность/неактивность в данный момент времени — это угроза безопасности?
Не согласен с вами. Тот же лайвинтернет соберет о Вас гораздо больше инфы, чем статистика активности/неактивности, так что не вижу повода беспокиться.
То что многие веб-разработчики и сами иногда не прочь поставить всякие лайвинторнеты, яндекс-метриксы, и прочие счетчики на свой сайт, это ничего, а то что какой-то сайт тупо собирает вашу активность/неактивность в данный момент времени — это угроза безопасности?
Не согласен с вами. Тот же лайвинтернет соберет о Вас гораздо больше инфы, чем статистика активности/неактивности, так что не вижу повода беспокиться.
0
Новопассит поможет тоже!
0
Visibility.onVisible имеет тот же порядок аргументов что и setInterval (функция, интервал), а Visibility.every — прямо противоположный.
Злые вы, марсиане.
Злые вы, марсиане.
+3
Удобная вещь, можно четко определить читает ли твой контент пользователь или нет.
+2
для того, чтобы анимации не жраил процессор нужно пользоваться requestAnimationFrame, но для других вещей — это очень крутой API, спасибо :-)
0
Прощай, заработок с popUnder'ов!
-1
Не знаю было ли так задумано или нет или может это не входит в возможности API, но при переключении на другое окно (нажал на уведомление из thunderbird во время просмотра видео) оно не понимает, что я больше не вижу этот таб
0
Теперь всякие летитбиты и депозиты будут следить за тем, смотришь ли ты на страницу, и если нет, то останавливать счетчик…
+8
Не просто будут. Уже следят! Я сегодня наткнулся на такой файлопомойный сайт. Пока понял это — минут 10 прошло. Я ввожу капчу, запускается счетчик, я сваливаю. Через минуту захожу — никаких ссылок на скачку нет. Думаю, черт, глюк, ввожу капчу снова. Снова сваливаю. Фэйл повторяется. Потом я стал переключаться туда-сюда и заметил, что счетчик-то не бежит, когда я в другой закладке. Пришлось сидеть, ждать. Вот ведь грустно-то как :)
+7
Да, это ужасная тёмная сторона этой технологии. В слабой попытке защититься хочу сказать, что есть хаки, определяющие что вы в другой табе и без Page Visibility API. Например хак MozVisibility использует то, что браузеры в фоновых табах запускают steInterval не чаще раза в секунду.
+3
Это неправильное API (впрочем, в HTML/CSS/JS столько недочетов и недоработок, что это уже мелочи). По идее, при сворачивании окна/переключении с таба браузер должен по умолчанию полностью его останавливать, чтобы не расходовать ресурсы. Если какому-то табу нужно быть активным и в фоне, он должен использовать какие-нибудь специальные функции для этого, чтобы попроить браузер не отключать его.
А такой подход — отключать анимацию и вычисления при уходе с таба по событию — работать не будет, так как 95% разработчиков просто не будут с этим заморачиваться.
И, кстати, подобные штуки давно уже используются (вроде бы) в Гуглокартах и вконтакте — они определяют активность пользователя по событиям мыши и клавиатуры и как-то на ее отсутствие реагируют.
А такой подход — отключать анимацию и вычисления при уходе с таба по событию — работать не будет, так как 95% разработчиков просто не будут с этим заморачиваться.
И, кстати, подобные штуки давно уже используются (вроде бы) в Гуглокартах и вконтакте — они определяют активность пользователя по событиям мыши и клавиатуры и как-то на ее отсутствие реагируют.
+1
Ваш метод слишком жесток — достаточно просто сильно ограничивать фоновые табы. Например, все нормальные браузеры сейчас запускаю
setInterval
-код минимум раз в секунду. 0
Впрочем, Page Visibility API — это не только об ограничении ресурсов. Это в первую очередь об юзабилити (вот бы YouTube начал его поддерживать и не включал бы видео, если оно открывается сразу в фоновом табе).
+3
<html>
<head>
<title>тайтл</title>
<script>
window.onblur = function () {document.title='документ неактивен'}
window.onfocus = function () {document.title='документ снова активен'}
</script>
</head>
<body>
<img src="http://www.google.com.ua/images/nav_logo83.png">
</body>
</html>
http://ssms-ka.narod2.ru/index_onblur.html
+5
Прекрасный хак!
0
А он будет работать, если в body будет форма и сложное оформление?
0
Вот с формами
http://ssms-ka.narod2.ru/Habrahabr.htm
http://ssms-ka.narod2.ru/Habrahabr.htm
0
Хотя он становится неактивным, даже если окно браузера просто теряет фокус, хотя сайт всё ещё видим пользователю.
0
причем способ стар как мир и успешно применяется.
0
Метод определения открытого таба или видимого участка страницы существовал давно, ещё при IE5-6 и для всех браузеров. Но решение было некрасивое — нагружать периодически браузер анимацией на 100% загрузки процессора и сравнивать время. За пределами окна и при закрытом табе время было больше для той же анимации. И если 2 таба решат действовать таким способом, показания будут влиять друг на друга. Из-за некрасивости метода никогда не было желания довести его до конца, до некоторой утилиты. Но счётчикам на странице некрасивость — не помеха; странно, что они только сейчас начинают внедрять детектирование открытого таба.
0
ради высшей справедливости, реализовать симулятор кота Шрёдингера в браузере нельзя, ведь сам опыт показывает парадокс неопределенности состояния элементарной частицы. только имитатор. (вот если бы подключить к компьютеру какой-нибудь USB-счетчик Гейгера то будет совсем другое дело!)
а симулятор подбрасывания монетки — можно.
а симулятор подбрасывания монетки — можно.
+1
Например, можно проверять новые сообщения каждую минуту, когда пользователь открыл сайт (то есть ему это важно). А когда пользователь не видит сайт (читает другую страницу) будем экономить его трафик и проверять почту каждые 5 минут:Я могу уйти со страницы (вкладки), при этом для меня важность получения сообщения или почты не уменьшится.
0
У меня в хроме не работает test/integration.html: выдаёт hidden, и потом уже не меняет, куда бы я ни сворачивал/тыкал/переключал.
Пробовал сам написать на голом API — тоже ничего не работает.
Видимо сломали.
Возвращаюсь к window.focus и window.blur.
Пробовал сам написать на голом API — тоже ничего не работает.
Видимо сломали.
Возвращаюсь к window.focus и window.blur.
0
Добрый день. Я прямо сейчас проверим в свежей бете Хрома (23.0.1271.26) — всё работает.
Если бы Page Visibility API был бы отключён, то страница выдавала бы «visible», а не «hidden» (по-умолчанию страница видима), так что я думаю, что API работает, просто посредине процесса происходит какая-то ошибка.
Вы можете посмотреть лог (Ctrl + Shift + J) — нет ли там сообщения об ошибке.
Если бы Page Visibility API был бы отключён, то страница выдавала бы «visible», а не «hidden» (по-умолчанию страница видима), так что я думаю, что API работает, просто посредине процесса происходит какая-то ошибка.
Вы можете посмотреть лог (Ctrl + Shift + J) — нет ли там сообщения об ошибке.
0
Sign up to leave a comment.
Page Visibility API и Visibility.js