19

おそらくご存じのとおり、特にユーザーがパスワード フィールドに入力を開始したときに、 Caps Lock がオンになっているかどうかを多かれ少なかれ確実に検出する比較的簡単な方法があります。ただし、追加のコーディングを必要とせずに、IE10 がこの機能を自動的にサポートすることは、まったく知られていない事実です (ソーススクリーンショットへの直接リンク、および簡単なデモ)。したがって、同様のJavascript機能を追加すると、IE10ユーザーには、スクリプトによって作成されたものとブラウザによって作成されたものという2つの「バブル」が警告とともに表示されるため、問題に直面しています。これは見栄えが悪く、混乱を招く可能性さえあります。これが、ブラウザにこの機能が組み込まれているかどうかを検出する方法を探している理由です。イベントをトリガーするか、プロパティを変更することを願っていますが、このようなものは見つかりませんでした。

ユーザーエージェント文字列を探すだけかもしれませんがTrident/6.0、ブラウザの検出は避けたいと思います。他のブラウザが同様の機能を追加する場合、おそらくコードのメンテナンスも必要になるでしょう。

信頼できる解決策がない場合は、IE チームに「caps-lock-is-on 機能」の検出機能を追加するように依頼し、おそらく HTML 仕様の編集者にもベンダーにこれを要求するよう依頼します。

4

3 に答える 3

13

msCapsLockWarningOffIE自体のプロパティの値を確認することで、IEが独自のcaps-lock警告を表示するかどうかを判断できますdocument。さらに、これのオンとオフを切り替えることができます。

document.msCapsLockWarningOff = true;

フィドル:http
://jsfiddle.net/jonathansampson/mqcHA/1/ MSDN:msCapsLockWarningOffプロパティ

于 2012-06-06T01:31:11.543 に答える
1

このチュートリアルをチェックアウトすることをお勧めします http: //www.upsdel​​l.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

于 2011-09-07T05:51:19.090 に答える
-1

キーボードイベントをキャプチャしてキーを検出することはできますが、caps-lockSTATEを判別することはできません。

于 2011-08-11T18:01:22.210 に答える