有没有办法检测IE10的“Caps Lock is on”功能?

时间:2011-08-11 16:05:01

标签: javascript internet-explorer-10 capslock

正如您可能知道的,有一种相对简单的方法,如果或多或少可靠,detect whether Caps Lock is on,尤其是当用户开始输入密码字段时。但是,IE10自动支持此功能是一个非常未知的事实,无需任何其他编码(sourcedirect link to screenshota simple demo)。因此,现在我遇到了一个问题,因为如果我添加一个类似的Javascript功能,IE10用户会看到两个带有警告的“气泡”,一个由我的脚本创建,一个由他们的浏览器创建;这可能看起来很难看甚至令人困惑。这就是为什么我正在寻找一种解决方案如何检测浏览器是否内置此功能的原因;我希望它触发一些事件或改变一些属性,但我没有找到这样的东西。

我可能只是在用户代理字符串中查找Trident/6.0,但我更愿意避免浏览器检测;如果其他浏览器添加类似的功能,它可能还需要一些代码维护。

如果没有可靠的解决方案,我会要求IE团队添加“caps-lock-is-on功能”检测功能,也可能是HTML规范的编辑,要求供应商这样做。

3 个答案:

答案 0 :(得分:12)

您可以通过检查msCapsLockWarningOff本身document属性的值来确定IE是否会显示自己的大写锁定警告。此外,您可以打开和关闭此功能:

document.msCapsLockWarningOff = true;

小提琴:http://jsfiddle.net/jonathansampson/mqcHA/1/
MSDN:msCapsLockWarningOff property

答案 1 :(得分:1)

我建议您查看本教程 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);

您也可以尝试微软定义的脚本来决定IE浏览器版本 http://support.microsoft.com/kb/167820

答案 2 :(得分:-1)

您可以捕获键盘事件并检测键,但无法确定大写锁定状态。