PointerLockElement devuelve nulo cuando se llama inmediatamente después de la función requestPointerLock()
domElement.onclick = () => { // requestPointerLock() needs to be called by user input domElement.requestPointerLock = domElement.requestPointerLock || domElement.mozRequestPointerLock; domElement.requestPointerLock(); console.log(document.pointerLockElement || document.mozPointerLockElement); // return null }Echa un vistazo a los documentos :
El método Element.requestPointerLock() le permite solicitar de forma asincrónica que el puntero se bloquee en el elemento dado.
Asíncrono significa que no puede llamar a esas líneas después de otra:
domElement.requestPointerLock(); document.pointerLockElement || document.mozPointerLockElement;En el momento en que se ejecuta la segunda línea, es posible que la primera declaración aún no haya terminado.
Los documentos también mencionan:
Para rastrear el éxito o el fracaso de la solicitud, es necesario escuchar los eventos pointerlockchange y pointerlockerror en el nivel del documento.
Use una implementación como se muestra en los documentos pointerlockchange :
document.addEventListener('pointerlockchange', (event) => { console.log('Pointer lock changed'); });