Можно ли с помощью скрипта определить, находится ли Google Chrome в режиме инкогнито?
Изменить: я действительно имел в виду, возможно ли это через пользовательский скрипт, но ответы предполагают, что JavaScript работает на веб-странице. Я вновь задал вопрос здесь в отношении пользовательских скриптов.
javascript
google-chrome
incognito-mode
РодеоКлоун
источник
источник
incognito
если бы это можно было легко определить :)Ответы:
Да. API файловой системы отключен в режиме инкогнито. Посетите https://jsfiddle.net/w49x9f1a/, когда вы находитесь и не находитесь в режиме инкогнито.
Образец кода:
источник
Один из способов - посетить уникальный URL-адрес, а затем проверить, считается ли ссылка на этот URL-адрес посещенной CSS.
Вы можете увидеть пример этого в «Обнаружении инкогнито» (мертвая ссылка) .
Исследовательская статья того же автора для замены ссылки "Обнаружение инкогнито" выше
В
main.html
добавить IFRAME,, и некоторый код JavaScript:
Затем в
test.html
iFrame загружаются:ПРИМЕЧАНИЕ: попытка сделать это из файловой системы может заставить Chrome плакать о «небезопасном Javascript». Однако он будет работать с веб-сервером.
источник
:visited
: hacks.mozilla.org/2010/03/…В Chrome 74+ это можно определить, оценив доступное пространство для хранения файловой системы.
См. Jsfiddle
источник
Вы можете в JavaScript увидеть ответ JHurrah . За исключением того, что ссылки не выделяются, в любом режиме инкогнито не сохраняется история просмотров и файлы cookie. Со страницы справки Google :
Как вы можете видеть, разница между обычным просмотром и инкогнито возникает после посещения веб-страницы, поэтому браузер ничего не передает серверу, когда он находится в этом режиме.
Вы можете увидеть, что именно ваш браузер отправляет на сервер, используя один из многих анализаторов HTTP-запросов, например этот . Сравните заголовки между обычным сеансом и инкогнито, и вы не увидите разницы.
источник
Если вы разрабатываете расширение, вы можете использовать API вкладок, чтобы определить, является ли окно / вкладка инкогнито.
Более подробную информацию можно найти здесь .
Если вы просто работаете с веб-страницей, это непросто, и так оно и было задумано. Однако я заметил, что все попытки открыть базу данных (window.database) терпят неудачу в режиме инкогнито, потому что в режиме инкогнито не разрешается оставлять следы данных на компьютере пользователя.
Я не тестировал его, но подозреваю, что все вызовы localStorage тоже терпят неудачу.
источник
При этом используется обещание дождаться, пока асинхронный код установит флаг, чтобы впоследствии мы могли использовать его синхронно.
тогда мы можем сделать
источник
reject('Check incognito failed')
с ,resolve(false)
если я хочуisIncognito
быть логическим, которое всегда истинно или ложно? Спасибо.Syntax Error: await is a reserved word
и думаю, чтоawait
всегда нужно быть в рамкахasync
функции. Поэтому я думаю, что этот код не работает.reject
вызовет исключение, если оно будет вызвано, и значение не будет возвращено, такisIncognito
будет всегдаtrue
илиfalse
так, как написан код. Однако вы также можете использовать здесь «разрешение», если хотите, чтобы возвращалось значение. И это может зависеть от того, как среда обрабатывает ожидание в глобальной области видимости? Он работает на хромированной консоли в глобальной области видимости, но вы можете попробовать обернуть все(async function() { 'everything here' })();
так, чтобы оно запускалось внутри асинхронной функцииisIncognito
вместо результата и затем запустить его в асинхронной функции:let isIncognito = new Promise( ...etc
тогда в другом месте у вас будет такая функция, как(async function() { if( !(await isIncognito) ) {alert('not incognito') } })();
Функция быстрого копирования и вставки на основе ответа Алока (примечание: это асинхронно)
использование:
источник
Вот предлагаемый ответ, написанный на синтаксисе ES6 и немного уточненный.
источник
Здесь решение с использованием обещаний
Как это использовать:
источник
В документации по режиму инкогнито специально сказано, что веб-сайты не будут вести себя иначе. Я считаю, что это означает, что ответ отрицательный.
источник