2015-04-15 10 views
5

Ho la seguente funzione definita nel mio sito. Funziona per alcune persone, non per gli altri. L'eccezione si verifica sull'ultima riga del metodo, dove si trova la concatenazione. Credo che poiché il carattere del punto interrogativo di url che designa la stringa di query viene considerato come un operatore ternario.Motivo sconosciuto per "Previsto": "" errore in javascript

C'è qualcosa qui che non vedo, o c'è un modo migliore per costruire questa stringa?

La variabile url ha un valore di: "? Mywebpage.aspx AccountNumber = 123456"

function popUp(url) { 
    var myleft = (screen.width) ? (screen.width - 750)/2 : 100; 
    var mytop = (screen.height) ? (screen.height - 300)/2 : 100; 
    var id = new Date().getTime(); 

    eval("page" + id + " = window.open(" + url + ", '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=900,height=325, top='" + mytop + "',left='" + myleft +");"); 
} 
+3

È necessario avvolgere il 'url' in' ' 'modo javascript sa che è una stringa. – Liam

+7

Non hai bisogno di farlo con 'eval()', e come in ogni caso che coinvolge 'eval()' questo significa che * non dovresti * farlo con 'eval()'. – Pointy

+0

Off topic: http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – isherwood

risposta

11

Potrai eliminare il "citazioni tra virgolette" problema evitando eval():

window["page" + id] = 
    window.open(url, id, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=900,height=325, top=' + mytop + ',left=' + myleft); 

Si dovrebbe anche fare in modo di utilizzare un "id "valore che funge da identificatore valido (inizia con un carattere non numerico, in particolare) oppure Internet Explorer genererà un errore.

0

uso encodeURIComponent(url) invece di usare url puri di window.open

Questa funzione codifica caratteri speciali. Inoltre, codifica i seguenti caratteri:, /? : @ & = + $ #

Maggiori informazioni here

+3

Non sono sicuro che questo risolva il problema reale. – Liam

+1

concordato. Questo dovrebbe essere un commento –

3

Hai provato a mettere virgolette singole prima e dopo la chiusura e l'apertura di virgolette sulla variabile url? Somthing come:

..." = window.open('" + url + "',... 
Problemi correlati