ie8 var w = window.open () – “Messaggio: argomento non valido.”

Ho un sito che ha un problema solo IE8:

Il codice è:

var w = window.open(urlstring, wname, wfeatures, 'false'); 

L’errore è:

Messaggio: argomento non valido.
Linea: 419 Char: 5
Codice: 0
URI: http: //HOSTNAME/js_context.js

Ho confermato il numero di riga del codice (“Line” e “URI” sono corretti), e capisco nelle versioni successive di IE8, questo è considerato accurato.

Ho controllato tutti i parametri in arrivo nella chiamata scaricando gli allarmi e sembrano tutti validi.

Questo problema non si verifica su FF (probabilmente 3).

AGGIORNARE:

Sembra che il problema sia l’utilizzo dell’assegnazione del risultato di window.open () quando si esegue “var w”. Quando ho diviso la linea in due dichiarazioni, funziona in IE8.

UPDATE2:

Basato su:

http://javascript.crockford.com/code.html

Quando una funzione deve essere invocata immediatamente, l’intera espressione di invocazione deve essere racchiusa in paren in modo che sia chiaro che il valore prodotto è il risultato della funzione e non della funzione stessa.

Questo non è esattamente quello che sta succedendo qui, ma ho scoperto che l’applicazione del principio risolveva il problema, nella modalità di compatibilità di IE8.

 var w = (window.open(urlstring, wname, wfeatures, false)); 

Questo è un vecchio post, ma forse ancora utile per qualcuno.

Ho avuto lo stesso messaggio di errore. Alla fine il problema era un nome non valido per il secondo argomento, cioè avevo una riga come:

  window.open('/somefile.html', 'a window title', 'width=300'); 

Il problema era “titolo di una finestra” in quanto non valido. Ha funzionato bene con la seguente riga:

  window.open('/somefile.html', '', 'width=300'); 

Infatti, leggendo attentamente mi sono reso conto che Microsoft non supporta un name come secondo argomento. Quando si esamina la pagina della documentazione ufficiale , si vede che Microsoft consente solo i seguenti argomenti, Se si utilizza tale argomento affatto:

  • _blank
  • _media
  • _genitore
  • _ricerca
  • _se stesso
  • _superiore

IE è schizzinoso sull’argomento del nome della finestra. Non gli piacciono gli spazi, i trattini o altri segni di punteggiatura.

Quando chiami window.open in IE, il secondo argomento (nome della finestra) deve essere una delle stringhe di destinazione predefinite o una stringa, che ha una forma di un identificatore valido in JavaScript.

Quindi, ciò che funziona in Firefox: “Job Directory 9463460”, non funziona in Internet Exploder, e deve essere sostituito da: “Job_Directory_9463460” per esempio (senza spazi, senza segni meno, senza punti, deve essere un identificatore valido) .

il problema potrebbe essere il wname, prova ad usare uno di quelli mostrati nel link sopra, cito:

Opzionale. Stringa che specifica il nome della finestra. Questo nome viene utilizzato come valore dell’attributo TARGET su un modulo o un elemento di ancoraggio.

  • _blank Il sURL viene caricato in una nuova finestra senza nome.
  • _media L’url viene caricato nella barra multimediale di Microsoft Internet Explorer 6. Service Pack 2 di Microsoft Windows XP (SP2) e versioni successive. Questa funzione non è più supportata. Di default l’url viene caricato in una nuova finestra o scheda del browser.
  • _parent Il sURL viene caricato nel genitore del frame corrente. Se il frame non ha un genitore, questo valore agisce come il valore _self.
  • _search Disabilitato in Windows Internet Explorer 7, vedi Sicurezza e compatibilità in Internet Explorer 7 per i dettagli. In caso contrario, sURL viene aperto nel riquadro di ricerca del browser in Internet Explorer 5 o versioni successive.
  • _self Il documento corrente viene sostituito con il sURL specificato.
  • _top sURL sostituisce qualsiasi set di frame che può essere caricato. Se non ci sono frameset definiti, questo valore agisce come valore _self.

se usi un altro wname, window.open non verrà eseguito …

In realtà un nome può essere usato, ma non può avere spazi così window.open("../myPage","MyWindows",...) dovrebbe funzionare senza problemi ( window.open ).

Ho anche incontrato questo problema mentre ho usato il seguente codice:

 window.open('test.html','Window title','width=1200,height=800,scrollbars=yes'); 

ma quando elimino lo spazio vuoto del “Titolo della finestra” funziona il seguente codice:

 window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes'); 

Ciao, usando il seguente codice funziona …

 onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes'); 

Precedentemente ho inserito come

 onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes'); 

Significa che Microsoft non ti permette di inserire il nome della finestra che dovrebbe essere vuoto nella funzione window.open

Grazie, Nilesh Pangul

Per me il problema era con un trattino “-” nel campo del nome della finestra. Ho rimosso i trattini e IE non ha commesso errori e in effetti apre la finestra.

Cosa rappresenta la posizione quattro, quella che ha ‘falso’ come valore? Non dovrebbe essere falso, (cioè senza virgolette?). È ansible che versioni precedenti di IE forzassero la stringa su un valore booleano, ma quelli più recenti no.

Le risposte qui sono corrette in quanto IE non supporta gli spazi quando si imposta il titolo in window.open (), nessuno sembra offrire una soluzione alternativa.

Ho rimosso il titolo dalla mia chiamata window.open (puoi usare null o ”), e hten aggiungo quanto segue alla pagina che si sta aprendo:

  

Non è l’ideale, ma ti permetterà di impostare il titolo su qualsiasi cosa desideri in tutti i browser.

Prova a rimuovere l’ultimo argomento. Oltre a ciò, assicurati che siano presenti urlstring, wname e wfeatures.

Ho scoperto lo stesso problema e dopo aver letto la prima risposta che supponeva che il problema fosse causato dal nome della finestra, l’ho cambiato: prima a “_blank”, che funzionava benissimo (compatibilità e vista normale), quindi al valore precedente, solo negativo lo spazio nel valore 🙂 – ha funzionato anche. IMO, il problema (o parte di esso) è causato dal fatto che IE non è in grado di utilizzare un valore di stringa normale come wname. Spero che questo aiuti se qualcuno si imbatte nello stesso problema.

Se si desidera utilizzare il nome di una nuova finestra, ecc., Inviando un modulo a questa finestra, quindi la soluzione, che funziona in IE, FF, Chrome:

  var ret = window.open("", "_blank"); ret.name = "NewFormName"; var myForm = document.createElement("form"); myForm.method="post"; myForm.action = "xyz.php"; myForm.target = "NewFormName"; ... 

Sembra che quando si utilizza anche un nome di finestra “valido” personalizzato (non _blank, ecc.) Usando window.open per lanciare una nuova finestra, ci sono ancora problemi. Funziona correttamente la prima volta che si fa clic sul collegamento, ma se si fa nuovamente clic (con la prima finestra avviata ancora triggers) si riceve un errore di script “Errore: non supportato da questa interfaccia”.