JavaScript
Web APIs
Web Components
Son un conjunto de APIs que nos permiten crear nuevas etiquetas HTML con su propia funcionalidad. Por ejemplo, podemos crear la etiqueta <snap-shot>
que encapsule la funcionalidad del ejemplo anterior con la webcam. Luego, esta etiqueta se podrá utilizar como cualquier otra del HTML estándar en aquellas páginas que lo necesiten1.
A continuación, se muestra el ejemplo anterior de la webcam pero implementado con este Web Component.
<body> <div class="card"> <div class="card-body row"> <div class="col-12"> <snap-shot id="snapshot">Cámara no disponible o sin permisos</snapshot> </div> <div class="col-12 text-center mt-3"> <button id="foto" type="button" class="btn btn-outline-secondary"> <i class="bi bi-camera-fill"></i> Foto </button> </div> </div> </div> </body>
html { font-size: 50%; padding: 2rem; } .card { width: 32.2rem;}
// El elemento del web component const snapshot = document.getElementById("snapshot"); const foto = document.getElementById("foto"); // Para alternar el botón entre foto y descarga foto.onclick = function() { try { const modoFoto = foto.textContent.indexOf('Foto') > -1; modoFoto ? snapshot.capturePhoto() : snapshot.downloadPhoto(); foto.innerHTML = modoFoto ? '<i class="bi bi-file-earmark-arrow-down-fill"></i> Descargar' : '<i class="bi bi-camera-fill"></i> Foto'; } catch(err) { foto.disabled = true; foto.innerHTML = '<i class="bi bi-exclamation-triangle-fill"></i> Pulsa en "Edit on Codepen"'; } };
1
Por ejemplo, en páginas que quieran hacer un login de usuarios basado en reconocimiento facial.