13

Ecco il problema, che si verifica solo in Internet Explorer (IE). Ho una pagina che ha collegamenti a diversi tipi di file. I collegamenti da questi file eseguono una funzione Javascript che apre una nuova finestra e carica il file specifico. Funziona alla grande, a meno che il file che ho bisogno di aprire nella nuova finestra sia un PDF, nel qual caso la finestra è vuota, anche se l'URL si trova nel campo dell'indirizzo. L'aggiornamento di quella finestra usando F5 non aiuta. Tuttavia, se metto il cursore nel campo dell'indirizzo e premere <enter>, il PDF viene caricato correttamente.IE non caricherà il PDF in una finestra creata con window.open

Questo problema si verifica solo in IE. L'ho visto in IE 7 e 8 e sto usando Adobe Acrobat Reader 9. In Firefox (PC e Mac) tutto funziona perfettamente. In Chrome (Mac), il PDF viene scaricato. In Safari (Mac) funziona. In Opera (Mac) mi viene richiesto di aprire o salvare. Fondamentalmente, tutto probabilmente funziona bene, ad eccezione di IE.

Ho cercato problemi simili e ho visto alcuni post in cui è stato suggerito di regolare alcune delle Opzioni Internet su IE. Ho provato questo, ma non aiuta, e il problema non era esattamente lo stesso comunque.

Ecco la funzione Javascript che utilizzo per aprire la nuova finestra.

function newwin(url,w,h) { 
    win = window.open(url,"temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes"); 
    win.focus(); 
} 

Si può vedere che mi passa nella URL, così come l'altezza, h, e la larghezza, w, della finestra. Ho usato una funzione come questa per anni e per quanto ne so non ho mai avuto un problema.

Io chiamo la funzione newwin() usando questo.

<a href="javascript:newwin('/path/document.pdf',400,300)">document.pdf</a> 

(Sì, so che ci sono altri modi migliori di utilizzare in linea JS, e ho anche provato alcuni di loro perché ho esaurito le cose da provare, ma non funziona niente.)

Quindi, se qualcuno ha un'idea di cosa potrebbe causare questo problema, mi piacerebbe sentirlo.

risposta

12

prova:

function newwin(url,w,h) { 
    var win = window.open("","temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes"); 
    win.location.href = url; 
    win.focus(); 
} 
+2

Ho avuto un problema simile, dopo aver applicato la soluzione, il file PDF ora funziona perfettamente. Potresti spiegare come funziona? È la zona o un po 'di sicurezza? Perché non funziona quando uso solo window.open? – SoftwareGeek

+1

Sono abbastanza sicuro che sia solo un bug nell'implementazione di IE (come al solito). Se si trattasse di un problema di sicurezza, non funzionerebbe affatto. –

1

ho risolto questo problema con un iframe invisibile

<div id="iframe" style="display: none"> 
    <iframe id="frm" style="display: none"></iframe> 
</div> 

E questa logica qui (usando jQuery):

if ($.browser.msie && ($.browser.version &lt; 9.0)) { 
    frm.location.href = href; 
} 
else { 
    window.open(href); 
} 

Il comportamento nel mio caso è esattamente come se il documento fosse stato aperto in un popup, dato che sto usando

Content-Disposition: attachment; filename="document.pdf" 
Problemi correlati