Ich habe eine Site, die nur ein IE8-Problem hat:
Der Code lautet:
var w = window.open(urlstring, wname, wfeatures, 'false');
Der Fehler ist:
Nachricht: Ungültiges Argument.
Zeile: 419 Zeichen: 5
Code: 0
URI: http: //HOSTNAME/js_context.js
Ich habe die Zeilennummer des Codes bestätigt (die "Zeile" und "URI" sind korrekt) und ich verstehe, dass dies in späteren Versionen von IE8 als korrekt angesehen wird.
Ich habe alle eingehenden Parameter im Aufruf überprüft, indem ich Warnungen ausgegeben habe, und sie sehen alle gültig aus.
Dieses Problem tritt bei FF nicht auf (wahrscheinlich 3).
AKTUALISIEREN:
Das Problem scheint darin zu liegen, das Ergebnis von window.open () zuzuweisen, wenn "var w" ausgeführt wird. Wenn ich die Zeile in zwei Anweisungen aufteile, funktioniert das in IE8.
UPDATE2:
Beyogen auf:
http://javascript.crockford.com/code.html
Wenn eine Funktion sofort aufgerufen werden soll, sollte der gesamte Aufrufausdruck in Parens eingeschlossen werden, damit klar ist, dass der erzeugte Wert das Ergebnis der Funktion und nicht der Funktion selbst ist.
Dies ist nicht genau das, was hier vor sich geht, aber ich fand heraus, dass die Anwendung des Prinzips das Problem im Kompatibilitätsmodus von IE8 löste.
var w = (window.open(urlstring, wname, wfeatures, false));
Antworten:
Dies ist ein alter Beitrag, aber vielleicht immer noch nützlich für jemanden.
Ich hatte die gleiche Fehlermeldung. Am Ende war das Problem ein ungültiger Name für das zweite Argument, dh ich hatte eine Zeile wie:
Das Problem war "ein Fenstertitel", da er nicht gültig ist. Mit der folgenden Zeile hat es gut funktioniert:
Beim sorgfältigen Lesen wurde mir klar, dass Microsoft ein
name
zweites Argument nicht unterstützt . Wenn Sie sich die offizielle Dokumentationsseite ansehen , sehen Sie, dass Microsoft nur die folgenden Argumente zulässt, wenn Sie dieses Argument überhaupt verwenden:quelle
IE ist wählerisch in Bezug auf das Fensternamenargument. Es mag keine Leerzeichen, Bindestriche oder andere Interpunktion.
quelle
Wenn Sie den
window.open
IE aufrufen , muss das zweite Argument (Fenstername) entweder eine der vordefinierten Zielzeichenfolgen oder eine Zeichenfolge sein, die in JavaScript die Form eines gültigen Bezeichners hat .Was also in Firefox funktioniert: "Job Directory 9463460", funktioniert nicht in Internet Exploder und muss ersetzt werden durch: "Job_Directory_9463460" zum Beispiel (keine Leerzeichen, keine Minuszeichen, keine Punkte, es muss eine gültige Kennung sein) .
quelle
Das Problem könnte der Name sein. Versuchen Sie, einen der im obigen Link gezeigten zu verwenden. Ich zitiere:
Wenn Sie einen anderen wnamen verwenden, wird window.open nicht ausgeführt ...
quelle
Eigentlich kann ein Name verwendet werden, er darf jedoch keine Leerzeichen enthalten und
window.open("../myPage","MyWindows",...)
sollte daher problemlos funktionieren ( window.open ).quelle
Ich habe dieses Problem auch festgestellt, als ich den folgenden Code verwendet habe:
aber wenn ich die Leerstelle des "Fenstertitels" lösche, funktioniert der folgende Code:
quelle
Hallo mit dem folgenden Code funktioniert es ...
Zuvor habe ich wie eingegeben
Bedeutet, dass Microsoft die Eingabe des Fensternamens nicht zulässt. Die
window.open
Funktion sollte leer sein ...Danke, Nilesh Pangul
quelle
Für mich war das Problem mit einem Bindestrich "-" im Feld Fensternamen. Ich habe die Bindestriche entfernt und der IE tritt nicht fehlerhaft auf und öffnet tatsächlich das Fenster.
quelle
Was bedeutet Position vier, die den Wert 'falsch' hat? Sollte das nicht falsch sein (dh ohne Anführungszeichen?). Es ist möglich, dass frühere Versionen von IE die Zeichenfolge zu einem Booleschen Wert zwingen, neuere jedoch nicht.
quelle
Die Antworten hier sind insofern richtig, als der IE beim Festlegen des Titels in window.open () keine Leerzeichen unterstützt. Keiner scheint eine Problemumgehung zu bieten.
Ich habe den Titel aus meinem Aufruf von window.open entfernt (Sie können null oder '' verwenden) und dann der geöffneten Seite Folgendes hinzugefügt:
Auf keinen Fall ideal, aber dies ermöglicht es Ihnen, den Titel in allen Browsern auf das zu setzen, was Sie wollen.
quelle
Versuchen Sie, das letzte Argument zu entfernen. Stellen Sie außerdem sicher, dass URL-Zeichenfolge, wname und wfeatures vorhanden sind.
quelle
Ich entdeckte das gleiche Problem und nachdem ich die erste Antwort gelesen hatte, die vermutete, dass das Problem durch den Fensternamen verursacht wurde, änderte ich sie: zuerst in '_blank', was gut funktionierte (sowohl Kompatibilität als auch reguläre Ansicht), dann auf den vorherigen Wert, nur minus Der Platz im Wert :) - hat auch funktioniert. IMO, das Problem (oder ein Teil davon) wird dadurch verursacht, dass der IE keinen normalen Zeichenfolgenwert als w-Namen verwenden kann. Hoffe, das hilft, wenn jemand auf das gleiche Problem stößt.
quelle
Wenn Sie den Namen eines neuen Fensters usw. verwenden möchten, um ein Formular in diesem Fenster zu veröffentlichen, dann ist die Lösung, die in IE, FF, Chrome funktioniert:
quelle
Es scheint, dass selbst bei Verwendung eines "gültigen" benutzerdefinierten Fensternamens (nicht _blank usw.) mit window.open zum Starten eines neuen Fensters immer noch Probleme auftreten. Es funktioniert einwandfrei, wenn Sie zum ersten Mal auf den Link klicken. Wenn Sie jedoch erneut darauf klicken (wobei das erste gestartete Fenster noch geöffnet ist), wird das Skript-Debug "Fehler: Keine solche Schnittstelle unterstützt" angezeigt.
quelle