2013-12-10 4 views
8

Каков наилучший способ определить, имеет ли пользователь консоль браузера (т. Е. Firebug, webkit инспектор, Opera dragonfly) open?Как определить, открыта ли консоль/инспектор браузера *?

(Т.е. мне не интересно просто обнаруживать наличие объекта в сценарии console.Я хочу знать, когда пользователь фактически открыл панель отладчика. Идеально в основных браузерах (IE/Safari/Chrome/Firefox ... и даже мобильные браузеры, если это возможно)

+2

Вы не можете это сделать. – epascarello

+1

Раньше вы знали, была ли открыта консоль IE, существует ли 'window.console'. –

+1

@epascarello - Я отказываюсь верить в это. Например, как минимум вы можете сравнить высоту окна с высотой окна просмотра и сделать некоторые выводы из этого. Не идеально, но, конечно, не невозможно. – broofa

ответ

0

Это непосредственно не возможно в Javascript по соображениям безопасности. вы должны были бы создать плагин для браузера, который, очевидно, не является допустимым решением, если вам нужна поддержка кросс-браузер.

Однако есть это сложное решение, которое этот парень придумал для Chrome, хотя я могу себе представить, что это долгосрочное решение, потому что оно зависит от факта что код работает медленнее, когда консоль вверх: http://blog.guya.net/2014/06/20/how-to-know-when-chrome-console-is-open/

+0

Можете ли вы объяснить, почему это невозможно в JavaScript? – Kmeixner

+0

Я немного изменил свой ответ, чтобы дать более подробную информацию. Здесь есть аналогичный поток о броузерах браузера: http://stackoverflow.com/questions/6902695/can-i-detect-whether-a-browsers-bookmarks-toolbar-is-enabled-with-javascript – cakidnyc

0

Если вы готовы принять помехи для пользователя, можно использовать the debugger statement, так как он доступен в всех основных браузерах.

Замечание: если пользователи вашего приложения заинтересованы в использовании консоли, они, вероятно, знакомы с инструментами разработчика и не удивятся тому, что он появится.

Короче говоря, оператор действует как точка останова и будет влиять на пользовательский интерфейс , только если средства разработки браузера размещены на.

Вот пример теста:

<body> 
<p>Devtools is <span id='test'>off</span></p> 
<script> 
    var minimalUserResponseInMiliseconds = 100; 
    var before = new Date().getTime(); 
    debugger; 
    var after = new Date().getTime(); 
    if (after - before > minimalUserResponseInMiliseconds) { // user had to resume the script manually via opened dev tools 
    document.getElementById('test').innerHTML = 'on'; 
    } 
</script> 

</body> 

ОТКАЗ: Я первоначально опубликовал этот точный ответ на this possibly duplicate question

-1

это лишнее, чтобы проверить, если инспектор открыт.

При открытии инспектора, есть некоторые дело может быть случилось:

  1. document.body.clientWidth будет изменен, если ваш инспектор прав.
  2. document.body.clientHeight будет изменен, если ваш инспектор находится внизу.
  3. ничего, если ваш инспектор находится в другом окне.

Таким образом, вы должны проверить ширину своего браузера.

И если вы хотите сделать что-то инспектор, пожалуйста, проверьте документ браузера для Devtools:

Chrome Firefox

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