¿Es posible iniciar una solicitud de descarga en el navegador para tipos MIME reconocidos utilizando solo JavaScript (enfoque del lado del cliente)?

Me gustaría permitir que el usuario descargue directamente un archivo con un solo clic. Sin embargo, hay un problema cuando se trata de tipos de memes conocidos, como HTML, audio, video, etc. Idealmente, me gustaría activar un aviso de descarga para archivos de audio / video. En última instancia, me gustaría hacerlo también para documentos HTML. La idea principal es facilitar a los usuarios la descarga de archivos sin pedirles que naveguen en el menú contextual.

Pienso, por ejemplo, en personas que no se sienten realmente cómodas con una computadora y sus funciones principales. Estas personas seguramente preferirán una mejor manera que “guardar como”.

La razón por la que estoy buscando una solución de JavaScript es que el enfoque de PHP solo funciona si se encuentra en un contexto de sitio web. Siempre que esté dentro de un plugin o contexto de script insertado (es decir, desarrollar un complemento para Firefox, Chrome o Safari), es posible que desee evitar solicitar una respuesta del lado del servidor.

Intenté lograr esto con window.open() y document.execCommand("saveAs",... Funciona, aunque es un error y falla para archivos de gran tamaño.

Luego, probé Downloadify que no funciona en todas las situaciones.

¿Existe un JavaScript puro, sin forma de Ajax para activar un aviso de descarga para que el usuario pueda descargar directamente un archivo con un simple clic izquierdo?

Hay un nuevo atributo de download en HTML5 con el que puede anotar enlaces. Indica al navegador que el recurso se debe descargar en lugar de navegar a. En este momento, solo funciona en Chrome, pero es parte de la especificación de HTML y, con suerte, será adoptado por otro navegador pronto.

Demostración: http://html5-demos.appspot.com/static/a.download.html Más información: http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

Puede usar . Esto es HTML5 y funciona con Chrome, Firefox y Edge (pero no con Internet Explorer, ni siquiera las versiones modernas).

Si alguien llega a esta pregunta ahora, la mejor solución es

  

Si el navegador admite el atributo HTML5, la descarga iniciará la descarga del archivo; de lo contrario (en el caso de Internet Explorer y navegadores antiguos), el enlace abrirá otra ventana con el archivo para descargar.