Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
El evento del mouse para la funcionalidad de descarga no funciona en IE

Estoy tratando de implementar una funcionalidad para descargar un archivo pdf usando javascript. Mi código no funciona en IE 11. Cualquier pista es muy apreciada. A continuación se muestra el código que estoy usando.

 saveByteArray: function(reportName, byte) { var bytes = new Uint8Array(byte); var blob = new Blob([bytes], {type: "application/pdf"}); var link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); var fileName = reportName; link.download = fileName; link.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));

}

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No necesita un nuevo MouseEvent para un simple clic (donde no especifica manualmente screenX , screenY , etc.).

Simplemente puede usar link.click() que es compatible con IE11: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

Prueba lo siguiente:

 var bytes = new Uint8Array(byte); var blob = new Blob([bytes], {type: "application/pdf"}); var link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); var fileName = reportName; link.download = fileName; link.click()

(También tenga en cuenta que la propiedad 'descargar' tampoco es compatible con IE11: https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement/download , no tengo IE11 en este momento, pero Creo que simplemente será ignorado)

about 4 years ago · Juan Pablo Isaza Denunciar

0

El constructor MouseEvent ( new MouseEvent() ) no es compatible con IE 11 .

Hay varios polyfills en el mundo, como este de los documentos de Mozilla, pero generalmente me resulta más fácil y completo usar algo como Babel para generar y usar automáticamente ese tipo de polyfill sin tener que buscarlos y definirlos explícitamente para todas y cada una de las cosas que IE no admite (lo cual es mucho).

about 4 years ago · Juan Pablo Isaza Denunciar

0

La solución sería, en lugar de usar el evento del mouse, usar la función msSaveOrOpenBlob para esta funcionalidad. Así que el código de trabajo final será el siguiente

 if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer { var bytes = new Uint8Array(byte); var blob = new Blob([bytes], {type: "application/pdf"}); window.navigator.msSaveOrOpenBlob(blob, reportName+".pdf"); } else { var bytes = new Uint8Array(byte); var blob = new Blob([bytes], {type: "application/pdf"}); var link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); var fileName = reportName; link.download = fileName; link.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window})); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda