13

Aquí está el problema, que solo ocurre en Internet Explorer (IE). Tengo una página que tiene enlaces a varios tipos diferentes de archivos. Los enlaces de estos archivos ejecutan una función de Javascript que abre una nueva ventana y carga el archivo específico. Esto funciona muy bien, a menos que el archivo que necesito abrir en la nueva ventana sea un PDF, en cuyo caso la ventana está en blanco, aunque la URL esté en el campo de dirección. Actualizar esa ventana con F5 no ayuda. Sin embargo, si pongo el cursor en el campo de dirección y presiono <enter>, el PDF se carga directamente.IE no cargará PDF en una ventana creada con window.open

Este problema solo ocurre en IE. Lo he visto en IE 7 y 8 y estoy usando Adobe Acrobat Reader 9. En Firefox (PC y Mac) todo funciona perfectamente. En Chrome (Mac), se descarga el PDF. En Safari (Mac) funciona. En Opera (Mac), me solicita abrir o guardar. Básicamente, todo funciona bien, excepto IE.

He buscado problemas similares y he visto algunos mensajes en los que se sugirió ajustar algunas de las opciones de Internet en IE. Lo he intentado pero no ayuda, y el problema no era exactamente el mismo de todos modos.

Aquí está la función de Javascript que uso para abrir la nueva ventana.

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(); 
} 

Se puede ver que yo paso en la dirección URL, así como la altura, h, y la anchura, w, de la ventana. He usado una función como esta durante años y, hasta donde sé, nunca he tenido un problema.

Llamo a la función newwin() usando esto.

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

(Sí, sé que hay otras formas mejores que el uso de JS en línea, e incluso he intentado algunos de ellos porque me he quedado sin cosas para probar, pero nada funciona.)

Entonces, si alguien tiene una idea de lo que podría estar causando este problema, me encantaría escucharlo.

Respuesta

12

intento:

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

Tuve un problema similar, después de aplicar tu solución, el pdf ahora se ve perfectamente bien. ¿Podría explicarme cómo funciona esto? ¿Es la zona o algo de seguridad? ¿Por qué no funciona cuando uso solo window.open? – SoftwareGeek

+1

Estoy bastante seguro de que es solo un error en la implementación de IE (como de costumbre). Si se tratara de un problema de seguridad, no funcionaría en absoluto. –

1

He resuelto este problema con un iframe invisible

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

Y esta lógica aquí (usando jQuery):

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

El comportamiento en mi caso es exactamente como si el documento se abriera en una ventana emergente, ya que estoy usando

Content-Disposition: attachment; filename="document.pdf" 
Cuestiones relacionadas