Mam witrynę, w której występuje problem tylko z przeglądarką IE8:
Kod to:
var w = window.open(urlstring, wname, wfeatures, 'false');
Błąd:
Wiadomość: nieprawidłowy argument.
Wiersz: 419 Znak: 5
Kod: 0
URI: http: // NAZWA HOSTA/js_context.js
Potwierdziłem numer linii kodu („Linia” i „URI” są poprawne) i rozumiem, że w późniejszych wersjach IE8 jest to uważane za poprawne.
Sprawdziłem wszystkie parametry przychodzące w wywołaniu przez zrzucanie alertów i wszystkie wyglądają na prawidłowe.
Ten problem nie występuje na FF (prawdopodobnie 3).
AKTUALIZACJA:
Wydaje się, że problem polega na przypisaniu wyniku funkcji window.open () podczas wykonywania polecenia „var w”. Kiedy podzielę linię na dwie instrukcje, działa to w IE8.
UPDATE2:
Oparte na:
http://javascript.crockford.com/code.html
Gdy funkcja ma zostać wywołana natychmiast, całe wyrażenie wywołania powinno być opakowane w pareny, aby było jasne, że tworzona wartość jest wynikiem funkcji, a nie samej funkcji.
Nie jest to dokładnie to, co się tutaj dzieje, ale stwierdziłem, że zastosowanie zasady rozwiązało problem w trybie zgodności IE8.
var w = (window.open(urlstring, wname, wfeatures, false));
Odpowiedzi:
To jest stary wpis, ale może nadal dla kogoś przydatny.
Miałem ten sam komunikat o błędzie. Ostatecznie problemem była nieprawidłowa nazwa drugiego argumentu, czyli miałem linię taką jak:
Problem dotyczył „tytułu okna”, ponieważ jest on nieprawidłowy. Działało dobrze z następującą linią:
Faktycznie, uważnie czytając zdałem sobie sprawę, że Microsoft nie popiera
name
drugiego argumentu. Kiedy spojrzysz na oficjalną stronę dokumentacji , zobaczysz, że Microsoft dopuszcza tylko następujące argumenty, jeśli w ogóle używasz tego argumentu:źródło
IE jest wybredny, jeśli chodzi o argument nazwy okna. Nie lubi spacji, myślników ani innych znaków interpunkcyjnych.
źródło
Kiedy wywołujesz
window.open
w IE, drugi argument (nazwa okna) musi być albo jednym z predefiniowanych łańcuchów docelowych, albo łańcuchem, który ma postać prawidłowego identyfikatora w JavaScript.Więc to, co działa w Firefoksie: „Job Directory 9463460”, nie działa w Internet Exploder i musi zostać zastąpione na przykład: „Job_Directory_9463460” (bez spacji, bez znaków minus, bez kropek, musi to być prawidłowy identyfikator) .
źródło
problemem może być nazwa, spróbuj użyć jednej z tych pokazanych w powyższym linku, cytuję:
jeśli używasz innej wname, window.open nie zostanie wykonane ...
źródło
Właściwie można użyć nazwy, ale nie może ona zawierać spacji, więc
window.open("../myPage","MyWindows",...)
powinna działać bez problemu ( window.open ).źródło
Spotykam się również z tym problemem, gdy użyłem następującego kodu:
ale kiedy usuwam puste miejsce w „tytule okna”, poniższy kod działa:
źródło
Cześć, używając następującego kodu, działa ...
Wcześniej wszedłem jak
Oznacza, że firma Microsoft nie zezwala na wprowadzanie nazwy okna, w którym powinno być puste
window.open
funkcji ...Dzięki, Nilesh Pangul
źródło
U mnie problem był z myślnikiem „-” w polu nazwy okna. Usunąłem kreski i IE nie wyświetla błędu i faktycznie otwiera okno.
źródło
Co reprezentuje pozycja czwarta, która ma wartość „fałsz”? Czy nie powinno to być fałszywe (tj. Bez cudzysłowów?). Możliwe, że wcześniejsze wersje IE zmuszałyby ciąg znaków do wartości logicznej, ale nowsze nie.
źródło
Odpowiedzi tutaj są poprawne, ponieważ IE nie obsługuje spacji podczas ustawiania tytułu w window.open (), żadna nie wydaje się oferować obejścia.
Usunąłem tytuł z mojego wywołania window.open (możesz użyć wartości null lub „”) i często dodałem do otwieranej strony:
W żadnym wypadku nie jest to idealne rozwiązanie, ale pozwoli ci to ustawić dowolny tytuł we wszystkich przeglądarkach.
źródło
Spróbuj usunąć ostatni argument. Poza tym upewnij się, że istnieją funkcje urlstring, wname i wfeatures.
źródło
Odkryłem ten sam problem i po przeczytaniu pierwszej odpowiedzi, że przypuszczalnie przyczyną problemu jest nazwa okna, zmieniłem ją: najpierw na '_blank', co działało dobrze (zarówno zgodność jak i zwykły widok), potem na poprzednią wartość, tylko minus miejsce w wartości :) - też działało. IMO, problem (lub jego część) jest spowodowany tym, że IE nie może użyć normalnej wartości ciągu jako wname. Mam nadzieję, że to pomoże, jeśli ktoś napotka ten sam problem.
źródło
Jeśli chcesz użyć nazwy nowego okna itp wysyłając formularz do tego okna to rozwiązanie działające w IE, FF, Chrome:
źródło
Wydaje się, że nawet przy użyciu „prawidłowej” nazwy niestandardowego okna (nie _blank itp.) Przy użyciu window.open do uruchomienia nowego okna, nadal występują problemy. Działa dobrze po pierwszym kliknięciu odsyłacza, ale jeśli klikniesz je ponownie (przy pierwszym uruchomionym oknie nadal będzie otwarte), pojawi się komunikat debugowania skryptu „Błąd: taki interfejs nie jest obsługiwany”.
źródło