113 votes

ie8 var w= window.open() - "Message : Argument non valide."

J'ai un site qui a un problème uniquement avec IE8 :

Le code est :

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

L'erreur est :

Message : Argument invalide.
Ligne : 419 Caractère : 5
Code : 0
URI : http://HOSTNAME/js_context.js

J'ai confirmé le numéro de ligne du code (la "Ligne" et l'"URI" sont corrects), et je comprends que dans les versions ultérieures d'IE8, cela est considéré comme exact.

J'ai vérifié tous les paramètres entrants dans l'appel en vidant les alertes, et ils semblent tous valides.

Ce problème ne se produit pas sur FF (probablement 3).

UPDATE :

Le problème semble résider dans l'utilisation de l'affectation du résultat de window.open() lors de l'exécution de "var w". Lorsque je divise la ligne en deux déclarations, cela fonctionne dans IE8.

UPDATE2 :

Basé sur :

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

Lorsqu'une fonction doit immédiatement, l'ensemble de l'invocation doit être entourée de parenthèses afin qu'il soit clair que la valeur produite est le résultat de la fonction et non la fonction elle-même.

Ce n'est pas exactement ce qui se passe ici, mais j'ai constaté que l'application de ce principe a résolu le problème, dans le mode de compatibilité d'IE8.

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

0 votes

J'ai eu le même problème, et le post de David est la meilleure réponse. Merci pour votre message et pour l'aide de David.

4voto

Raymond Points 1

J'ai également rencontré ce problème lorsque j'ai utilisé le code suivant :

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

mais lorsque je supprime le espace vide du "Titre de la fenêtre". le code ci-dessous fonctionne :

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

2voto

Nilesh Pangul Points 1

Bonjour, en utilisant le code suivant, cela fonctionne...

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

Auparavant, je suis entré comme

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

Cela signifie que Microsoft ne vous permet pas d'entrer le nom de la fenêtre ; il doit être vide dans le champ window.open fonction...

Merci, Nilesh Pangul

2voto

iohans Points 16

Pour moi, le problème venait d'un tiret "-" dans le champ du nom de la fenêtre. J'ai supprimé les tirets et IE n'a pas d'erreur et ouvre même la fenêtre.

1voto

x0n Points 26002

Que représente la position quatre, celle qui a pour valeur 'false' ? Ne devrait-il pas s'agir de false, (c'est-à-dire sans guillemets ?). Il est possible que les versions antérieures d'IE convertissent la chaîne de caractères en booléen, mais que les nouvelles versions ne le fassent pas.

1voto

MrGlass Points 3374

Les réponses données ici sont correctes en ce sens qu'IE ne prend pas en charge les espaces lors de la définition du titre dans window.open(), mais aucune ne semble proposer de solution de contournement.

J'ai supprimé le titre de mon appel window.open (vous pouvez utiliser null ou ''), et j'ai ensuite ajouté ce qui suit à la page ouverte :

<script>document.title = 'My new title';</script>

Ce n'est en aucun cas l'idéal, mais cela vous permettra de définir le titre comme vous le souhaitez dans tous les navigateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X