Pregunta

Estoy usando este trozo de código jQuery / Javascript en mi sitio para abrir una ventana emergente:

$('#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 han probado IE6). IE aparece un error en la línea de window.open. ¿Por qué? El error que da IE es "Argumento no válido" y eso es todo.

¿Fue útil?

Solución

Es el espacio en el segundo parámetro que 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 windowName window.open() causa un error, pero es probable que sólo un detalle de implementación. El windowName se utiliza como una referencia interna, y se puede utilizar como un valor para un atributo de destino de un ancla o forma, así que supongo IE no puede manejar que internamente. Los documentos de referencia para Gecko / Firefox dice que este parámetro debe no contener espacios, pero claramente las versiones actuales de Gecko no tienen un problema con él si lo hace.

Otros consejos

El argumento windowName sólo puede contener caracteres alfanuméricos y guiones (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.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top