2010-02-03 11 views
9

estoy usando este trozo de código jQuery/Javascript en mi sitio para abrir una ventana emergente:código Javascript "window.open" no funcionará en Internet Explorer 7 u 8

$('#change_photo_link').click(function(){ 
    $id = $('#id').attr('value'); 

    window.open("photo.upload.php?id=" + $id,"Upload Photo", 
    "menubar=no,width=430,height=100,toolbar=no"); 
}); 

Este código funciona en Firefox y Chrome. No funciona en IE7 o IE8 (no ha probado IE6). IE aparece un error en la línea window.open. ¿Por qué? El error que IE da es "Argumento inválido" y eso es todo.

Respuesta

32

Es el espacio en el segundo parámetro que lo está causando. Si utiliza "UploadPhoto" en lugar de "Subir fotos", funciona:

$('#change_photo_link').click(function(){ 
    $id = $('#id').attr('value'); 

    window.open("photo.upload.php?id=" + $id,"UploadPhoto", 
    "menubar=no,width=430,height=100,toolbar=no"); 
}); 

Parece que no puedo encontrar ninguna razón oficial de por qué tener un espacio en el parámetro de windowNamewindow.open() provoca un error, pero es probable que solo sea un detalle de implementación. El windowName se usa como referencia interna, y se puede usar como un valor para un atributo de destino de un anclaje o formulario, así que supongo que IE no puede manejarlo internamente. Los documentos de referencia para Gecko/Firefox dicen que este parámetro debe contener espacios, pero las versiones claramente actualizadas de Gecko no tienen un problema si lo hace.

+0

zombat: sí, ¿por qué es un problema, no es ese el título de la ventana ... solo imaginé que tenía que ser toString() por eso. – Hogan

+2

Probablemente sea porque el segundo parámetro es * el * nombre de la ventana, y no está permitido contener espacios en blanco –

+2

@Hogan: Es un _nombre interno_, no un _título_. –

9

El argumento windowName solo puede contener caracteres alfanuméricos y guiones bajos (es decir, [A-Z0-9_]).

Debe cambiar

window.open("photo.upload.php?id=" + $id,"Upload Photo", 
"menubar=no,width=430,height=100,toolbar=no"); 

a

window.open("photo.upload.php?id=" + $id,"Upload_Photo", 
"menubar=no,width=430,height=100,toolbar=no"); 

o algún otro nombre que no tiene espacios.

Ver https://developer.mozilla.org/En/DOM/Window.open.

Cuestiones relacionadas