Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way how to detect IE10's "Caps Lock is on" feature?

As you probably know, there is a relatively simple way how to, more or less reliably, detect whether Caps Lock is on, especially when user starts typing into password fields. However, it is a quite unknown fact that IE10 supports this feature automatically, without need for any additional coding (source, direct link to screenshot and a simple demo). Thus, now I'm facing a problem because if I add a similar Javascript funcionality, IE10 users will see two "bubbles" with the warning, one created by my script and one created by their browser; this might look ugly or even be confusing. This is why I'm looking for a solution how to detect whether browser has this functionality built-in or not; I hope it triggers some event or changes some property, but I haven't found anything like this.

I might just look for Trident/6.0 in user agent string, but I'd rather like to avoid browser detection; it would probably also require some code maintenance if other browsers add similar feature.

If there is no reliable solution, I'll ask the IE Team to add the ability of "caps-lock-is-on feature" detection and probably also the editors of HTML specification to require vendors to do this.

like image 362
duri Avatar asked Aug 11 '11 16:08

duri


People also ask

How do you check whether Caps Lock is on?

The getModifierState() method returns true if a modifier is active; otherwise, it returns false . The event. getModifierState('CapsLock') can be used to detect if the caps lock is on.

How do I remove caps lock indicator?

Hit the Windows key & type: Control Panel and then open it. Then steer to the Key Settings tab & double-click on Caps Lock. Now uncheck 'Displays Caps Lock Status on Screen' & reboot your PC.


2 Answers

You can determine whether IE will be showing its own caps-lock warning by checking the value of the msCapsLockWarningOff property on the document itself. Further, you can toggle this on and off:

document.msCapsLockWarningOff = true;

Fiddle: http://jsfiddle.net/jonathansampson/mqcHA/1/
MSDN: msCapsLockWarningOff property

like image 134
Sampson Avatar answered Oct 08 '22 05:10

Sampson


I suggest you checkout this tutorial http://www.upsdell.com/BrowserNews/res_sniff.htm

you may try something like this

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

or javascript version on detecting and prototyping the browser version

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

you may also try the script defined by microsoft to decide the IE browser version http://support.microsoft.com/kb/167820

like image 37
Njax3SmmM2x2a0Zf7Hpd Avatar answered Oct 08 '22 03:10

Njax3SmmM2x2a0Zf7Hpd