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.

251voto

Il s'agit d'un ancien message, mais il peut encore être utile à quelqu'un.

J'ai eu le même message d'erreur. En fin de compte, le problème était un nom invalide pour le deuxième argument, c'est-à-dire que j'avais une ligne comme :

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

Le problème était le titre d'une fenêtre, qui n'est pas valide. Cela a bien fonctionné avec la ligne suivante :

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

En fait, en lisant attentivement, je me suis rendu compte que Microsoft ne prend pas en charge une name comme deuxième argument. Lorsque l'on regarde le page de documentation officielle vous voyez que Microsoft n'autorise que les arguments suivants, à condition de ne pas utiliser du tout cet argument :

  • _blank
  • _média
  • _parent
  • Recherche
  • _self
  • _haut

78voto

prlafferty Points 1

IE est pointilleux sur l'argument du nom de la fenêtre. Il n'aime pas les espaces, les tirets ou toute autre ponctuation.

3 votes

Ou des points ou des tirets ou peut-être une autre ponctuation

0 votes

Merci, c'est utile. Je déteste vraiment IE 6-10.

16voto

Mr. Napik Points 735

Lorsque vous appelez window.open dans IE, le deuxième argument (nom de la fenêtre) doit être l'un des éléments prédéfinis suivants cible ou une chaîne de caractères, qui a un forme d'un identifiant valide en JavaScript.

Ce qui fonctionne dans Firefox : "Répertoire des emplois 9463460", n'est pas fonctionne dans Internet Exploder, et doit être remplacé par : "Job_Directory_9463460" par exemple (pas d'espace, pas de signe moins, pas de point, il doit s'agir d'un identifiant valide).

0 votes

Merci cela m'a aidé J'avais des tirets (-) dans le nom de ma fenêtre.

8voto

Le problème peut provenir du nom de domaine, essayez d'utiliser l'un de ceux indiqués dans le lien ci-dessus, je cite :

En option. Chaîne qui spécifie le nom de la fenêtre. Ce nom est utilisé comme valeur de l'attribut TARGET sur un formulaire ou un élément d'ancrage.

  • _blank Le sURL est chargé dans une nouvelle fenêtre sans nom.
  • _media L'url est chargée dans la barre des médias dans Microsoft Internet Explorer 6. Microsoft Windows XP Service Pack 2 (SP2) et ultérieur. Cette fonctionnalité n'est plus supportée. Par défaut, l'url est chargée dans une nouvelle fenêtre de navigateur ou onglet.
  • _parent Le sURL est chargé dans le parent du cadre actuel. Si le cadre n'a pas de parent, cette valeur agit comme la valeur _self.
  • _search Désactivé dans Windows Internet Explorer 7, voir Sécurité et compatibilité dans Internet Explorer 7 pour plus de détails. Sinon, la sURL est ouverte dans le volet de recherche du navigateur dans Internet Explorer 5 ou supérieur.
  • _self Le document actuel est remplacé par le sURL spécifié.
  • _top sURL remplace tout jeu de cadres qui pourrait être chargé. S'il n'y a pas de framesets définis, cette valeur agit comme la valeur _self.

si vous utilisez un autre wname, window.open ne s'exécutera pas...

5voto

oliver Points 1

En fait, un nom peut être utilisé, mais il ne peut pas contenir d'espaces. window.open("../myPage","MyWindows",...) devrait fonctionner sans problème ( fenêtre.ouverte ).

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