Navigator

Interact with media devices and more

See media for getting and recording media

If the user blocks the browser request, you won’t be able to ask for the permission again. On the contrary, if the user dismisses your custom request

Find Devices

navigator.mediaDevices.enumerateDevices().then(devices => {
  const audioInputs = devices.filter(d => d.kind === "audioinput");
  if (audioInputs.length === 0) console.error("No audio input devices");
});

Devices Output

  • .kind => audioinput | videoinput | audiooutput

[{"deviceId":"default","kind":"audioinput","label":"Default - Internal Microphone (Built-in)","groupId":"fb2d9c14fbd30628d3fd7fe2b5dc62880dc4684ac956b68db7b9ecca88c1405b"},{"deviceId":"459560c107d13f6c86e1d8afcb97163f893c0c97dfed4d1921bfd2e12c6fbb7f","kind":"audioinput","label":"Internal Microphone (Built-in)","groupId":"fb2d9c14fbd30628d3fd7fe2b5dc62880dc4684ac956b68db7b9ecca88c1405b"}, //.... ]
  const constraints = {
    audio: {
      //if doesnt exist, then OverconstrainedError
      deviceId: {exact: selectedAudio.deviceId}
    },
    video: {
      deviceId: {exact:  selectedVideo.deviceId}
    }
  };

  navigator.mediaDevices.getUserMedia(constraints).
    then(gotStream).catch(handleError);

Permissions

  • .state => denied | granted | prompt

navigator.permissions.query({ name: "microphone" }).then(p => {
  console.log(p.state);
});
navigator.permissions.query({ name: "microphone" }).then(console.log);

Advanced

Mobile native app sharing -> https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share

Last updated