2011-08-11 2 views
19

Comme vous le savez probablement, il existe un moyen relativement simple de savoir comment, plus ou moins fiable, detect whether Caps Lock is on, en particulier lorsque l'utilisateur commence à taper dans les champs de mot de passe. Cependant, il est un fait tout à fait inconnu que IE10 prend en charge cette fonctionnalité automatiquement, sans aucun besoin de codage supplémentaire (source, direct link to screenshot et a simple demo). Donc, maintenant je suis confronté à un problème car si j'ajoute une fonctionnalité Javascript similaire, les utilisateurs d'IE10 verront deux "bulles" avec l'avertissement, l'un créé par mon script et l'autre créé par leur navigateur; Cela pourrait sembler laid ou même être confus. C'est pourquoi je cherche une solution pour savoir si le navigateur a cette fonctionnalité intégrée ou non; J'espère que cela déclenche un événement ou change une propriété, mais je n'ai rien trouvé de tel.Existe-t-il un moyen de détecter la fonctionnalité "Caps Lock is on" de IE10?

Je pourrais juste chercher Trident/6.0 dans la chaîne d'agent d'utilisateur, mais je préfère éviter la détection de navigateur; cela nécessiterait probablement aussi une certaine maintenance de code si d'autres navigateurs ajoutent une fonctionnalité similaire. S'il n'y a pas de solution fiable, je demanderai à l'équipe IE d'ajouter la possibilité de détection de "caps-lock-is-on feature" et probablement aussi les éditeurs de spécification HTML pour exiger que les vendeurs le fassent.

+2

Il n'y a pas de norme pour exposer ce comportement par défaut. Il n'y a donc aucun moyen de tester les fonctionnalités, de sorte que la correspondance de l'agent utilisateur est la seule solution. Ou vous pouvez essayer de positionner votre bulle sous la bulle par défaut (en supposant que la bulle des navigateurs soit toujours en haut), donc elle est bloquée et non 'visible' – Gerben

+0

@Gerben Merci pour votre commentaire. Comme il semble que votre résumé décrit respectueusement l'état actuel et les solutions possibles, n'hésitez pas à ajouter votre réponse en guise de réponse; Je vais probablement le définir comme accepté s'il n'y a pas de solution magique. – duri

+0

La définition de l'attribut 'novalidate' sur le formulaire contenant a-t-elle un effet sur le comportement du ballon? La documentation semble suggérer que cela désactive les fonctions de validation intégrées - bien qu'il ne soit pas clair si c'est quand le formulaire est soumis ou si supprime la vérification en ligne sur les éléments ... – Fraser

Répondre

12

Vous pouvez déterminer si IE affiche son propre avertissement de verrouillage des majuscules en vérifiant la valeur de la propriété msCapsLockWarningOff sur le document lui-même. De plus, vous pouvez activer et désactiver cette fonction:

document.msCapsLockWarningOff = true; 

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

+1

Très bien, j'espère que Microsoft aura ajouté une telle propriété. – duri

-1

Vous pouvez capturer l'événement du clavier et détecter la clé, mais vous ne pouvez pas déterminer l'état du verrouillage des majuscules.

+0

Nous vous remercions de votre intérêt à répondre à la question. Cependant, il semble que vous ayez mal compris la question; veuillez le lire attentivement. Je n'ai aucun problème avec la détection du verrouillage des majuscules, je suis à la recherche d'un moyen de déterminer s'il faut afficher l'avertissement à l'utilisateur ou le navigateur le fait seul. – duri

1

Je vous suggère extrayez ce tutoriel http://www.upsdell.com/BrowserNews/res_sniff.htm

vous pouvez essayer quelque chose comme ça

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

ou javascript la version sur la détection et le prototypage de la version du navigateur

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

vous pouvez également essayer le script défini par microsoft pour décider de la version du navigateur IE http://support.microsoft.com/kb/167820

+5

On me dit que IE10 ne supporte plus les commentaires conditionnels? –

+0

Ensuite, je vous suggère d'essayer le javascript pour trident/6 comme ils font ici http://support.microsoft.com/kb/167820 – Njax3SmmM2x2a0Zf7Hpd

Questions connexes