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.

0voto

Macha Points 4488

Essayez d'enlever le dernier argument. Sinon, assurez-vous que urlstring, wname, et wfeatures existent.

0voto

J'ai découvert le même problème et après avoir lu la première réponse qui supposait que le problème était causé par le nom de la fenêtre, je l'ai changé : d'abord en '_blank', ce qui a bien fonctionné (à la fois en mode compatibilité et en mode normal), puis à la valeur précédente, mais sans l'espace dans la valeur :) - Cela a également fonctionné. Selon moi, le problème (ou une partie du problème) est dû au fait qu'IE ne peut pas utiliser une chaîne de caractères normale comme nom d'utilisateur. J'espère que cela vous aidera si vous rencontrez le même problème.

0voto

Belinszki Imre Points 1

Si vous voulez utiliser le nom de la nouvelle fenêtre etc affichage d'un formulaire à cette fenêtre, puis la solution, qui fonctionne dans 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";

      ...

0voto

Vince Points 1

Il semble que même en utilisant un nom de fenêtre personnalisé "valide" (pas _blank, etc.) en utilisant window.open pour lancer une nouvelle fenêtre, il y a toujours des problèmes. Cela fonctionne bien la première fois que vous cliquez sur le lien, mais si vous cliquez à nouveau (avec la première fenêtre lancée toujours ouverte), vous recevez une "Erreur : No such interface supported" script debug.

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