| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| iframe { border: 1px solid black; } |
| </style> |
| <script> |
| function log(msg) |
| { |
| document.getElementById("console").innerHTML += msg + "<br>"; |
| } |
| |
| async function test(event) |
| { |
| await navigator.mediaDevices.getUserMedia({video: true, audio: true }); |
| let devices = await navigator.mediaDevices.enumerateDevices(); |
| let result = { |
| origin: document.origin, |
| devices: devices.map(device => { return {deviceId: device.deviceId, kind: device.kind} }), |
| }; |
| |
| parent.postMessage(result, "*"); |
| |
| let parentPage = document.referrer.split('/').pop(); |
| if (parentPage != "enumerate-devices-source-id.html") |
| return; |
| |
| let iframe = document.createElement('iframe'); |
| iframe.src = location.href; |
| document.body.appendChild(iframe); |
| } |
| |
| function handler(event) |
| { |
| let result = { |
| origin: `${event.data.origin}`, |
| devices: event.data.devices |
| }; |
| |
| parent.postMessage(result, "*"); |
| } |
| |
| addEventListener("message", handler, false); |
| |
| </script> |
| </head> |
| <body onload="test()"> |
| <pre id="console"></pre> |
| </body> |
| </html> |