Ie8 var w = window.open () – "Message: argument invalide".

J'ai un site qui a un problème IE8-seulement:

Le code est:

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

L'erreur est la suivante:

Message: argument invalide.
Ligne: 419 Char: 5
Code: 0
URI: http: //HOSTNAME/js_context.js

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

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

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

METTRE À JOUR:

Le problème semble être l'utilisation de l'attribution du résultat de window.open () lors de la "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 être invoquée immédiatement, toute l'expression d'invocation doit être enveloppée dans parens afin qu'il soit clair que la valeur produite résulte de la fonction et non de la fonction elle-même.

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

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

Il s'agit d'une ancienne publication, mais peut-être encore utile pour quelqu'un.

J'ai eu le même message d'erreur. À la fin, 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 «un titre de fenêtre» car il 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 supporte pas un name comme deuxième argument. Lorsque vous regardez la page de documentation officielle , vous voyez que Microsoft ne permet que les arguments suivants, si vous utilisez cet argument:

  • _blanc
  • _médias
  • _parent
  • _chercher
  • _soi
  • _Haut

IE est pointilleux au sujet de l'argument du nom de la fenêtre. Il n'aime pas les espaces, les tirets ou d'autres ponctuations.

Lorsque vous appelez window.open dans IE, le second argument (nom de la fenêtre) doit être soit l'une des chaînes de cible prédéfinies, soit une chaîne, qui a une forme d'identifiant valide en JavaScript.

Donc, ce qui fonctionne dans Firefox: "Job Directory 9463460", ne fonctionne pas dans Internet Exploder, et doit être remplacé par: "Job_Directory_9463460" par exemple (sans espaces, sans signe négatif, sans point, il doit s'agir d'un identifiant valide) .

Le problème pourrait être le nom de famille, essayez d'utiliser l'un de ceux affichés dans le lien ci-dessus, je cite:

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

  • Recep Marco Marco illustrddddiceAdiceddice Marco illustrdddiceeadiceddiceaddiceAeaddicediceddicediceddouver Marco illustrdddiceeadicediceddicediceeaeaeaAeaeaeaAdddMacheaúeaeadddeterddMMMMueeaAAAAAdTachelasd
  • _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 plus tard. Cette fonctionnalité n'est plus prise en charge. Par défaut, l'url est chargé dans une nouvelle fenêtre ou onglet du navigateur.
  • _parent Le sURL est chargé dans le parent de l'image actuelle. Marco d'AjustageFemdMMélachélemMachélemMachélemMéléldélemidenceAficidence aleeaNachéletteAAAAAAAdAAAAégMMMMMMMMMMMMMMMMMMMMMMMMMMGMMPAGMM
  • _search Désactivé dans Windows Internet Explorer 7, voir Sécurité et Compatibilité dans Internet Explorer 7 pour plus de détails. Sinon, le sURL est ouvert dans le volet de recherche du navigateur dans Internet Explorer 5 ou une version ultérieure.
  • _self Le document actuel est remplacé par le sURL spécifié.
  • _top sURL remplace tous les jeux de cadres qui peuvent être chargés. Marco Da DaF Da MarcoAndMélMéléldiceAeaeaeaeaeaAeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea

Si vous utilisez un autre nom, window.open n'effectuera pas …

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

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

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

Dddd1515151515 citrHMHHMMMachachachachachachachementsdachelasAppachelas aulfe

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

Bonjour, l'utilisation du code suivant 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'); 

Signifie que Microsoft ne vous permet pas d'entrer le nom de la fenêtre, il devrait être vide dans la fonction window.open

Merci, Nilesh Pangul

Pour moi, le problème était avec 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 la fenêtre.

Que représente la position quatre, celle qui a «faux» comme valeur? Ne devrait-il pas être faux, (c'est-à-dire sans guillemets?). Il est possible que les versions antérieures d'IE contraignent la chaîne à une version booléenne, mais les plus récentes ne le font pas.

Les réponses ici sont correctes dans la mesure où IE ne prend pas en charge les espaces lors du réglage du titre dans window.open (), aucun ne semble offrir une solution de contournement.

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

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

Pas idéal par aucun moyen, mais cela vous permettra de définir le titre comme vous le souhaitez dans tous les navigateurs.

Essayez de supprimer le dernier argument. En dehors de cela, assurez-vous que les URL, les noms et les fonctions existent.

J'ai découvert le même problème et, après avoir lu la première réponse, je suppose que le problème est causé par le nom de la fenêtre, l'a changé: d'abord à '_blank', qui fonctionnait bien (à la fois compatibilité et vue régulière), puis à la valeur précédente, seulement moins L'espace dans la valeur 🙂 – a également fonctionné. IMO, le problème (ou une partie de celui-ci) est causé par IE étant incapable d'utiliser une valeur de chaîne normale en tant que wname. J'espère que cela aidera si quelqu'un rencontre le même problème.

Si vous voulez utiliser le nom de la nouvelle fenêtre, etc. en affichant 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"; ... 

Il semble 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 encore des problèmes. Cela fonctionne bien la première fois que vous cliquez sur le lien, mais si vous cliquez dessus (avec la première fenêtre lancée toujours en haut), vous recevez un débogage de script "Erreur: pas de support de l'interface".