Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!