Estoy creando una aplicación en el navegador y quiero usar CTRL+O para abrir un archivo y leer su contenido con la API de FileReader.
El siguiente código funciona, pero solo después de una interacción del usuario con el mouse:
window.onkeydown = (e) => { if (e.ctrlKey && event.key === 'o') { e.preventDefault(); // CTRL + O : document.getElementById('file-input').click(); // trigger a click on the INVISIBLE file-picker input return false; } } document.getElementById('file-input').addEventListener('change', (e) => { var file = e.target.files[0]; if (!file) { return; } var reader = new FileReader(); reader.onload = function(e) { console.log(e.target.result); }; reader.readAsText(file); }, false); #file-input { display: none; } <input type="file" id="file-input" />Sin embargo, me gustaría permitir que el usuario haga CTRL + O justo después de cargar la página y permitir que se cargue el archivo, incluso si no hay interacción del usuario con el mouse.
Tengo este problema en Firefox:
<input> picker was blocked due to lack of user activation.En Chrome, funciona sin problema.
Pregunta: ¿Cómo permitir que el usuario que llega a la página web haga CTRL + O directamente, sin tener que hacer clic primero en los botones para iniciar una "interacción con el usuario"?
¿No se podría considerar una pulsación de tecla (CTRL+O) como una interacción del usuario?
Nota: Estoy creando una aplicación para personas que usan principalmente métodos abreviados de teclado y pocos clics del mouse.