ie8 var w = window.open ()- "메시지 : 유효하지 않은 인수."


113

IE8 전용 문제가있는 사이트가 있습니다.

코드는 다음과 같습니다.

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

오류는 다음과 같습니다.

메시지 : 잘못된 인수입니다.
줄 : 419 문자 : 5
코드 : 0
URI : http : //HOSTNAME/js_context.js

코드의 줄 번호 ( "Line"및 "URI"가 정확함)를 확인했으며 이후 버전의 IE8에서는 이것이 정확한 것으로 간주된다는 것을 알고 있습니다.

경고를 덤프하여 호출의 모든 수신 매개 변수를 확인했으며 모두 유효 해 보입니다.

이 문제는 FF (아마 3)에서는 발생하지 않습니다.

최신 정보:

문제는 "var w"를 수행 할 때 window.open ()의 결과 할당을 사용하는 것 같습니다. 줄을 두 개의 문으로 나누면 IE8에서 작동합니다.

업데이트 2 :

기반 :

http://javascript.crockford.com/code.html

함수를 즉시 호출해야하는 경우 생성되는 값이 함수 자체가 아니라 함수의 결과임을 명확하게하기 위해 전체 호출 표현식을 괄호로 래핑해야합니다.

이것이 정확히 여기서 일어나는 것은 아니지만 IE8의 호환성 모드에서 원칙을 적용하면 문제가 해결된다는 것을 알았습니다.

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

나는 같은 문제가 있었고 David의 게시물이 가장 좋은 답변입니다. 귀하의 게시물과 David의 도움에 감사드립니다.
Ervin

답변:


251

이것은 오래된 게시물이지만 누군가에게 여전히 유용 할 수 있습니다.

동일한 오류 메시지가 표시되었습니다. 결국 문제는 두 번째 인수에 대한 잘못된 이름이었습니다. 즉, 다음과 같은 줄이있었습니다.

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

문제는 유효하지 않기 때문에 '창 제목'이었습니다. 다음 줄에서 잘 작동했습니다.

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

사실, 나는 마이크로 소프트가 name두 번째 주장을 지지하지 않는다는 것을주의 깊게 읽었다 . 당신이 볼 때 공식 문서 페이지 , 당신은 전혀 그 인수를 사용하는 경우 Microsoft는 다음 인수를 허용 참조 :

  • _공백
  • _미디어
  • _부모의
  • _검색
  • _본인
  • _상단

1
이 기능에 대한 Mozilla 설명을 확인하지 않은 것 같습니다. IE8 전용 파손에만 집중했기 때문입니다.
benc

2
간단히 말해서 developer.mozilla.org/en/DOM/window.open- > "strWindowName은 새 창의 제목을 지정하지 않습니다."
benc

33
또한 Windows 이름에 "my-windowname"과 같은 이름에 대시 "-"가있을 때 IE에서이 오류가 발생했습니다. IE 품질은 나를 놀라게하지 않습니다.
매트 Palmerlee

1
링크 한 MSDN 설명서 페이지에는 "선택 사항. 창 이름을 지정하는 문자열"이 나와 있습니다. 위에 나열한 인수 외에 다른 키워드를 사용할 수 있어야하는 것처럼 들립니다.
James McMahon 2011

3
그것은 ImageDisplay1234 같은 이름으로 IE8에서 작동하지만 이미지 - 디스플레이 - 1234으로 작업을하지 않습니다
boatcoder

78

IE는 창 이름 인수에 대해 까다 롭습니다. 공백, 대시 또는 기타 구두점을 좋아하지 않습니다.


3
또는 점, 대시 또는 기타 구두점
boatcoder 2012

이 helpful..really입니다 덕분에 IE 6 ~ 10 싫어
딜립 Godhani

16

window.openIE에서 호출 할 때 두 번째 인수 (창 이름)는 미리 정의 된 대상 문자열 중 하나 이거나 JavaScript에서 유효한 식별자 형식을 가진 문자열 이어야합니다 .

따라서 Firefox에서 작동하는 것 : "Job Directory 9463460" 은 Internet Exploder에서 작동 하지 않으며 "Job_Directory_9463460"으로 대체되어야합니다 (예 : 공백, 빼기 기호, 점 없음, 유효한 식별자 여야 함). .


(-) 내 창 이름 감사드립니다 .. 이것은 내가 대시했다 .. 절 도와 줬어요
delux247

8

문제는 wname 일 수 있습니다. 위 링크에 표시된 항목 중 하나를 사용해보십시오.

선택 과목. 창의 이름을 지정하는 문자열입니다. 이 이름은 양식 또는 앵커 요소의 TARGET 속성 값으로 사용됩니다.

  • _blank sURL이 이름이 지정되지 않은 새 창에로드됩니다.
  • _media URL은 Microsoft Internet Explorer 6의 미디어 표시 줄에로드됩니다. Microsoft Windows XP 서비스 팩 2 (SP2) 이상. 이 기능은 더 이상 지원되지 않습니다. 기본적으로 URL은 새 브라우저 창이나 탭에로드됩니다.
  • _parent sURL은 현재 프레임의 부모로로드됩니다. 프레임에 부모가없는 경우이 값은 _self 값으로 작동합니다.
  • _search Windows Internet Explorer 7에서 비활성화 됨 자세한 내용은 Internet Explorer 7의 보안 및 호환성을 참조하십시오. 그렇지 않으면 Internet Explorer 5 이상에서 브라우저의 검색 창에서 sURL이 열립니다.
  • _self 현재 문서가 지정된 sURL로 대체됩니다.
  • _top sURL은로드 될 수있는 모든 프레임 셋을 대체합니다. 정의 된 프레임 세트가없는 경우이 값은 _self 값으로 작동합니다.

다른 wname을 사용하면 window.open이 실행되지 않습니다 ...


5
마지막 진술은 올바르지 않습니다. 또한 (a) 기존 프레임의 이름을 지정하여 해당 프레임에 페이지를로드하거나, (b) 기존 "명명 된 창"의 이름을 지정하여 페이지를로드하거나 (c) 그렇지 않은 이름을 지정할 수 있습니다. "명명 된 창"을 만들기 위해 존재합니다.
Ben Blank

window.open의 결과를 변수로 설정하지 않은 것을 제외하고는 동일한 문제가 발생했습니다. wname 변수에 페이지 제목이 있습니다. '_blank'로 변경하고 문제를 해결했습니다.
Derek White

내가 범위를 좁힌 것은-또는. 구두점 Image-Display-1234-> ImageDisplay1234를 제거했을 때 모든 것이 잘되었습니다.
boatcoder 2012

1
Ben의 주장을 뒷받침하기 위해 MSDN이 window.open의 두 번째 매개 변수에 대해 말하는 것입니다. "창의 이름을 지정하는 문자열.이 이름은 양식 또는 앵커 요소의 TARGET 속성 값으로 사용됩니다." 다음은 TARGET 속성 doc : msdn.microsoft.com/en-us/library/ms534659(v=vs.85).aspx 입니다. target 은이 답변에 나열된 값뿐만 아니라 임의의 문자열 일 수 있음을 분명히 말합니다.
niaher 2012-08-22

5

실제로 이름은 사용할 수 있지만 공백 window.open("../myPage","MyWindows",...)이 없어서 문제없이 작동합니다 ( window.open ).


4

다음 코드를 사용하는 동안에도이 문제가 발생합니다.

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

하지만 "창 제목"빈 공간을 삭제 하면 아래 코드가 작동합니다.

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

이것은 매우 도움이되었습니다. 내 공간을 _로 대체했습니다. 멍청한 IE!
MrGlass

2

안녕하세요 다음 코드를 사용하여 작동합니다 ...

onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes');

이전에는 다음과 같이 입력했습니다.

onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes');

Microsoft에서 창 이름을 입력하는 것을 허용하지 않음을 의미 window.open합니다.

감사합니다, Nilesh Pangul


이것은 정확하지 않습니다. 비워 둘 수 있지만 반드시 비워 둘 필요는 없습니다.
Jimmy Bosse

2

나에게 문제는 창 이름 필드에 대시 "-"가있었습니다. 대시를 제거하고 IE는 오류가 발생하지 않으며 실제로 창을 엽니 다.


1

값이 '거짓'인 위치 4는 무엇을 의미합니까? 거짓이 아니어야합니다 (즉, 따옴표없이?). 이전 버전의 IE는 문자열을 부울로 강제 변환 할 수 있지만 최신 버전은 그렇지 않습니다.


따옴표를 제거했지만 IE8 문제의 원인은 아닙니다.
benc

1

여기에 대한 대답은 IE가 window.open ()에서 제목을 설정할 때 공백을 지원하지 않고 해결 방법을 제공하는 것 같지 않다는 점에서 정확합니다.

내 window.open 호출에서 제목을 제거하고 (null 또는 ''를 사용할 수 있음) hten이 열리는 페이지에 다음을 추가했습니다.

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

결코 이상적이지는 않지만 모든 브라우저에서 원하는대로 제목을 설정할 수 있습니다.


0

마지막 인수를 제거하십시오. 그 외에는 urlstring, wname 및 wfeatures가 있는지 확인하십시오.


0

나는 같은 문제를 발견하고 문제가 창 이름으로 인해 발생했다고 가정하는 첫 번째 답변을 읽은 후 처음에는 잘 작동하는 '_blank'로 변경했습니다 (호환성 및 일반보기 모두), 다음 이전 값으로 만 마이너스 값의 공간 :)-또한 작동했습니다. IMO에서 문제 (또는 그 일부)는 IE가 일반 문자열 값을 wname으로 사용할 수 없기 때문에 발생합니다. 누구든지 같은 문제가 발생하면 도움이되기를 바랍니다.


0

이 창에 양식을 게시하는 새 창 등의 이름을 사용하려면 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";

      ...

0

window.open을 사용하여 "유효한"사용자 지정 창 이름 (_blank 등이 아님)을 사용하여 새 창을 시작하더라도 여전히 문제가있는 것 같습니다. 링크를 처음 클릭하면 제대로 작동하지만 다시 클릭하면 (처음 실행 된 창이 계속 열려있는 상태에서) "오류 : 지원되는 인터페이스가 없습니다."스크립트 디버그가 나타납니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.