Есть ли способ, как обнаружить функцию «Caps Lock включен» в IE10? - PullRequest
19 голосов
/ 11 августа 2011

Как вы, вероятно, знаете, существует относительно простой способ, более или менее надежно, определить, включен ли Caps Lock на , особенно когда пользователь начинает вводить в поля пароля. Однако совершенно неизвестно, что IE10 поддерживает эту функцию автоматически, без необходимости какого-либо дополнительного кодирования ( source , прямая ссылка на скриншот и простая демонстрационная версия ). Таким образом, теперь я столкнулся с проблемой, потому что, если я добавлю аналогичную функциональность Javascript, пользователи IE10 увидят два «пузыря» с предупреждением, одно создано моим сценарием, а другое - их браузером; это может выглядеть уродливо или даже сбивать с толку. Вот почему я ищу решение, как определить, имеет ли браузер эту функциональность или нет; Я надеюсь, что это вызовет какое-то событие или изменит какое-либо свойство, но я не нашел ничего подобного.

Я мог бы просто искать Trident/6.0 в строке агента пользователя, но я бы предпочел избежать обнаружения браузером; вероятно, потребуется также некоторое обслуживание кода, если другие браузеры добавят аналогичную функцию.

Если не существует надежного решения, я попрошу команду IE добавить возможность обнаружения функции «caps-lock-is-on» и, возможно, также редакторы спецификации HTML, требующие от поставщиков этого сделать.

Ответы [ 3 ]

12 голосов
/ 06 июня 2012

Вы можете определить, будет ли IE отображать свое собственное предупреждение caps-lock, проверив значение свойства msCapsLockWarningOff на самом document.Кроме того, вы можете включать и выключать это:

document.msCapsLockWarningOff = true;

Fiddle: http://jsfiddle.net/jonathansampson/mqcHA/1/
MSDN: msCapsLockWarningOff свойство

1 голос
/ 07 сентября 2011

Я предлагаю вам проверить этот урок http://www.upsdell.com/BrowserNews/res_sniff.htm

Вы можете попробовать что-то вроде этого

<!--[if gte IE 10]>
    <script type="text/javascript">
        var isTrulyIE = true;
    </script>
<![endif]-->

или версия JavaScript при обнаружении и создании прототипа версии браузера

 this.isIE10 = (this.version == "10.0") || (this.ua.indexOf("trident/6") != -1);

Вы также можете попробовать скрипт, определенный Microsoft, чтобы определить версию браузера IE. http://support.microsoft.com/kb/167820

0 голосов
/ 11 августа 2011

Вы можете захватить событие клавиатуры и обнаружить клавишу, но вы не можете определить состояние caps-lock.

...