Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Element : méthode requestPointerLock()

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

Want more browser support for this feature? Tell us why.

La méthode requestPointerLock() de l'interface Element permet de demander de manière asynchrone que le pointeur soit verrouillé sur l'élément donné.

Pour suivre le succès ou l'échec de la demande, il est nécessaire d'écouter les évènements pointerlockchange et pointerlockerror au niveau du Document.

Note : Dans la spécification actuelle, requestPointerLock() ne communique le succès ou l'échec de la demande qu'en déclenchant les évènements pointerlockchange ou pointerlockerror. Une mise à jour proposée de la spécification (angl.) met à jour requestPointerLock() pour qu'elle retourne une promesse (Promise) qui communique le succès ou l'échec. Cette page documente la version qui retourne une promesse (Promise). Cependant, notez que cette version n'est pas encore une norme et n'est pas implémentée par tous les navigateurs. Voir la compatibilité des navigateurs pour plus d'informations.

Syntaxe

js
requestPointerLock()
requestPointerLock(options)

Paramètres

options Facultatif

Un objet d'options qui peut contenir les propriétés suivantes :

unadjustedMovement Facultatif

Désactive l'ajustement au niveau du système d'exploitation pour l'accélération de la souris et permet d'accéder aux données brutes de la souris. La valeur par défaut est false ; la définir sur true désactive l'accélération de la souris.

Valeur de retour

Une promesse (Promise) qui se résout avec undefined.

Sécurité

Une activation transitoire est requise lors de l'appel de requestPointerLock(). L'utilisateur·ice doit interagir avec la page ou un élément de l'interface utilisateur pour que cette fonctionnalité fonctionne. De plus, le document associé à l'élément cible doit être dans l'état actif.

Si vous appelez requestPointerLock() immédiatement après avoir libéré le verrouillage du pointeur avec le geste de déverrouillage par défaut (au lieu de passer par un appel à exitPointerLock()), l'appel échoue, même si une activation transitoire est disponible.

Si vous appelez requestPointerLock() avec requestFullscreen(), le requestPointerLock() doit être appelé en premier, car le requestFullscreen() consomme l'état de l'activation transitoire.

Le jeton de bac à sable allow-pointer-lock doit être ajouté lors de l'appel de requestPointerLock() dans un élément HTML <iframe>. De plus, aucun autre élément dans d'autres éléments HTML <iframe> ne peut être en mode verrouillage du pointeur.

Exemples

Le verrouillage du pointeur est souvent utilisé dans les jeux en ligne, lorsque vous souhaitez que les mouvements de votre souris se concentrent sur le contrôle du jeu, sans être distrait par le pointeur de la souris se déplaçant, sortant de la zone de jeu ou atteignant le bord de la fenêtre.

Pour activer le verrouillage du pointeur, vous devez amener l'utilisateur·ice à interagir avec l'interface utilisateur d'une manière ou d'une autre, peut-être en appuyant sur un bouton, ou sur le canevas du jeu lui-même.

js
canvas.addEventListener("click", async () => {
  await canvas.requestPointerLock();
});

Les systèmes d'exploitation activent par défaut l'accélération de la souris, ce qui est utile lorsque vous souhaitez parfois des mouvements lents et précis (par exemple lorsque vous utilisez un logiciel de graphisme), mais que vous souhaitez également parcourir de grandes distances avec un mouvement de souris plus rapide (par exemple pour faire défiler et sélectionner plusieurs fichiers). Cependant, pour certains jeux en perspective à la première personne, les données brutes de la souris sont préférées pour contrôler la rotation de la caméra — où le même mouvement de distance, rapide ou lent, entraîne la même rotation. Cela se traduit par une meilleure expérience de jeu et une plus grande précision, selon les joueur·euse·s professionnel·le·s.

Pour désactiver l'accélération de la souris au niveau du système d'exploitation et accéder aux données brutes de la souris, vous pouvez définir unadjustedMovement sur true :

js
canvas.addEventListener("click", async () => {
  await canvas.requestPointerLock({
    unadjustedMovement: true,
  });
});

Pour plus d'exemples de code, voir :

Spécifications

Spécification
Pointer Lock 2.0
# dom-element-requestpointerlock

Compatibilité des navigateurs

Voir aussi