2010-02-03 15 views
9

Sto usando questo pezzo di codice jQuery/Javascript sul mio sito per aprire una finestra pop-up:Javascript codice "window.open" non funziona in Internet Explorer 7 o 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"); 
}); 

Questo codice funziona su Firefox e Chrome. Non funziona su IE7 o IE8 (non ho testato IE6). IE visualizza un errore sulla linea window.open. Perché? L'errore fornito da IE è "Argomento non valido" e questo è tutto.

risposta

32

È lo spazio nel secondo parametro che lo sta causando. Se si utilizza "UploadPhoto" invece di "Carica Foto", funziona:

$('#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"); 
}); 

io non riesco a trovare alcuna motivazione ufficiale sul perché avere uno spazio nel parametro windowName di window.open() causa un errore, ma è probabilmente solo un dettaglio di implementazione. Lo windowName viene utilizzato come riferimento interno e può essere utilizzato come valore per un attributo di destinazione di un ancoraggio o di un modulo, quindi suppongo che IE non possa gestirlo internamente. I documenti di riferimento per Gecko/Firefox dicono che questo parametro dovrebbe contenere, ma le versioni chiaramente aggiornate di Gecko non hanno alcun problema con esso se lo fa.

+0

zombat: sì, perché è un problema, non è il titolo della finestra ... ho solo pensato che doveva essere toString() per questo motivo. – Hogan

+2

Probabilmente è perché il secondo parametro è il * nome * della finestra, e non è permesso contenere spazi bianchi –

+2

@Hogan: È un _name_ interno, non un _titolo_. –

9

L'argomento windowName può contenere solo caratteri alfanumerici e caratteri di sottolineatura (ad esempio [A-Z0-9_]).

È necessario modificare

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 un altro nome che non ha spazi.

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

Problemi correlati