7

He leído las preguntas relacionadas con este tema, pero aún no he encontrado una solución a este problema. Tengo una sencilla función de JavaScript que llama a window.open cuando se hace clic en un enlace:Javascript window.open devuelve nulo en IE8 de 32 bits en Win7 x64

var newwindow; 
function pop(url) 
{ 
    newwindow=window.open(url,'','height=500,width=532'); 
    if (window.focus) {newwindow.focus();} 
} 

Esto funciona bien en Chrome, Firefox, e incluso trabaja en 64 bits Internet Explorer 8. Sin embargo, cuando intento esto en 32 -bit IE 8 me sale un error que 'newwindow' es nulo o no es un objeto.

¿Alguna idea sobre por qué esto ocurriría solo en el IE 8 de 32 bits?

Mi corazonada era que estaba relacionada con el UAC en Windows 7 (estoy ejecutando Win 7 x64), pero me aparece el error incluso después de desactivar el Modo protegido y ejecutarlo con la Vista de compatibilidad activada.

también me pregunto por qué Windows 7 x64 viene con las versiones de 32 bits y 64 bits de Internet Explorer 8, y por qué la versión de 32 bits fue clavado en mi barra de tareas ...

Respuesta

2

no lo hago Conozca sus otros problemas, pero la razón por la que la versión de 32 bits es la más visible por defecto es que la mayoría de los complementos aún no tienen versiones de 64 bits, por ejemplo. Flash, por lo que el usuario promedio estaría muy confundido cuando no puedan hacer que Youtube trabaje en su nuevo y brillante sistema de 64 bits.

0

Noté algo similar.

Tengo una ventana abierta con la función IE showModalDialog. En esta ventana, tengo un botón que llama al window.open. Esta llamada devuelve null. Luego abrí la misma página en la ventana normal, no en el diálogo modal. Esta vez, el botón también devolvió null, pero IE me dijo que la página web quiere abrir el pop-up window wand, esto fue bloqueado. Me dio la opción de desbloquearlo ... y comenzó a funcionar en ambos casos: ventana modal y normal.

Parece que en modo modal en IE, IE no muestra advertencias como popup blocked.

10

Internet Explorer parece devolver nulo si la url está fuera de su dominio actual. Puede solucionarlo abriendo una página vacía primero, luego navegue por la ventana hasta la url real:

var newwindow; 
function pop(url) 
{ 
    newwindow=window.open('','','height=500,width=532'); 
    newwindow.location = url; 

    if (window.focus) {newwindow.focus();} 
} 
+2

esto funciona. Sin embargo, la propiedad window.closed cambió a "true" cuando la nueva ventana se actualizó una vez que estableciste con la url de ubicación. – noboundaries

+1

La solución está funcionando pero está creando otro impacto ya que está convirtiendo la propiedad 'window.close' en verdadera, lo que no es una solución factible. Porque en mi aplicación tengo un cheque en 'window.closed()' que hace que la condición sea verdadera incluso si la ventana no está cerrada. –

Cuestiones relacionadas