J'ai un site qui a un problème avec IE8 uniquement:
Le code est:
var w = window.open(urlstring, wname, wfeatures, 'false');
L'erreur est:
Message: argument non valide.
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 «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 de l'appel en vidant les alertes, et ils semblent tous valides.
Ce problème ne se produit pas sur FF (probablement 3).
METTRE À JOUR:
Le problème semble être en utilisant l'affectation du résultat de window.open () lors de l'exécution de "var w". Lorsque je divise la ligne en deux instructions, cela fonctionne dans IE8.
UPDATE2:
Basé sur:
http://javascript.crockford.com/code.html
Lorsqu'une fonction doit être appelée immédiatement, l'expression d'appel entière 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 trouvé que l'application du principe résolvait le problème, en mode de compatibilité d'IE8.
var w = (window.open(urlstring, wname, wfeatures, false));
Réponses:
Ceci est une ancienne publication mais peut-être encore utile pour 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:
Le problème était «un titre de fenêtre» car il n'est pas valide. Cela a bien fonctionné avec la ligne suivante:
En fait, en lisant attentivement, j'ai réalisé que Microsoft ne prend pas en charge un
name
deuxième argument. Lorsque vous regardez la page de documentation officielle , vous voyez que Microsoft autorise uniquement les arguments suivants, si vous utilisez cet argument du tout:la source
IE est pointilleux sur l'argument du nom de la fenêtre. Il n'aime pas les espaces, les tirets ou autres signes de ponctuation.
la source
Lorsque vous appelez
window.open
dans IE, le deuxième argument (nom de la fenêtre) doit être l'une des chaînes cibles prédéfinies ou une chaîne, qui a la forme d'un 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 (pas d'espaces, pas de signe moins, pas de points, il doit s'agir d'un identifiant valide) .
la source
le problème pourrait être le wname, essayez d'utiliser l'un de ceux indiqués dans le lien ci-dessus, je cite:
si vous utilisez un autre wname, window.open ne s'exécutera pas ...
la source
En fait, un nom peut être utilisé mais il ne peut pas avoir d'espaces et
window.open("../myPage","MyWindows",...)
devrait donc fonctionner sans problème ( window.open ).la source
Je rencontre également ce problème en utilisant le code suivant:
mais lorsque je supprime l' espace vide du "Titre de la fenêtre", le code ci-dessous fonctionne:
la source
Salut en utilisant le code suivant son fonctionnement ...
Auparavant, je suis entré comme
Signifie que Microsoft ne vous permet pas de saisir le nom de la fenêtre, il doit être vide dans la
window.open
fonction ...Merci, Nilesh Pangul
la source
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 ne fait pas d'erreur et ouvre en fait la fenêtre.
la source
Que représente la position quatre, celle qui a «faux» comme valeur? Cela 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 à un booléen, mais pas les plus récentes.
la source
Les réponses ici sont correctes dans la mesure où IE ne prend pas en charge les espaces lors de la définition 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 hten a ajouté ce qui suit à la page en cours d'ouverture:
Pas idéal du tout, mais cela vous permettra de définir le titre comme vous le souhaitez dans tous les navigateurs.
la source
Essayez de supprimer le dernier argument. À part cela, assurez-vous que urlstring, wname et wfeatures existent.
la source
J'ai découvert le même problème et après avoir lu la première réponse supposant que le problème était causé par le nom de la fenêtre, je l'ai changé: d'abord en '_blank', qui a bien fonctionné (compatibilité et vue normale), 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 l'incapacité d'IE à utiliser une valeur de chaîne normale comme wname. J'espère que cela aide si quelqu'un rencontre le même problème.
la source
Si vous souhaitez utiliser le nom de la nouvelle fenêtre, etc. en publiant un formulaire dans cette fenêtre, alors la solution, qui fonctionne dans IE, FF, Chrome:
la source
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 un débogage de script "Erreur: aucune interface de ce type n'est prise en charge".
la source