Estoy cargando un PDF de la siguiente manera (estoy usando Angular 2, pero no estoy seguro de que esto importe...):
//Inside a service class downloadPdf = (id): Observable<Blob> => { let headers = new Headers(); headers.append("Accept", "application/pdf"); return this.AuthHttp.get(this.pdfURL + id, { headers: headers, responseType: ResponseContentType.Blob }).map(res => new Blob([res.blob()], {type: "application/pdf"})); } //Inside a click handler this.pdfService.downloadPdf(this.id).subscribe((data: Blob) => { let fileURL = window.URL.createObjectURL(data); window.open(fileURL); });Este código funciona muy bien en Firefox. En Chrome, una nueva pestaña se abre y se cierra brevemente. Cuando depuro y pongo surf manualmente en la URL del objeto, Chrome puede abrirlo sin problemas.
¿Qué estoy haciendo mal aquí?
La apertura de una nueva pestaña fue bloqueada por un bloqueador de anuncios.
No puede funcionar, la nueva ventana emergente será bloqueada por el navegador, debido a que se creó a partir de una devolución de llamada que no es un evento confiable , para que funcione debe llamarse directamente desde el controlador de clics, o debe deshabilitar las ventanas emergentes bloqueadas en su navegador .
Chrome solo permitirá que esto funcione como se desea si la llamada ajax regresa en menos de un segundo. Más allí