MSIE bug? - window.open() after alert()
      글쓴이: M.W.Park / 작성시간: 월, 2006/04/17 - 11:06오전    
  
  이미 알려진 것일 수도 있겠지만, 저는 검색을 통해서 찾을 수는 없었습니다.
alert하나때문에 몇시간 고생한걸 생각하면 치가 떨리는군요.
삽질방지 공유차원에서 올립니다.
문제의 MSIE 버전정보:
버전: 6.0.2900.2180.xpsp_sp2_gdr.050301-1519 암호화 수준: 128-비트 제품 ID:55663-641-9636704-23798 업데이트 버전:; SP2;
테스트 html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Testing for MSIE, really sucks</title>
 
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="MSIE,bug,sucks">
    <meta http-equiv="description" content="DO NOT USE MSIE, PLZ">
 
    <script language="javascript">
<!--
/*
 * 윈도우 이름에 공백문자가 들어있다.
 * 파폭과 오페라에선 제대로 동작한다.
 * MSIE는 "오류:잘못된 인수입니다."를 출력하며 창이 열리지 않는다.
 * <a href="http://developer.mozilla.org/en/docs/DOM:window.open" rel="nofollow">http://developer.mozilla.org/en/docs/DOM:window.open</a> 을 보면 말은
 * 된다.
 * 이해해 줄 수 있는 수준이다.
 */
function test1(url) {
  var popup=window.open(url, 'foo bar');
  popup.focus();
  return false;
}
/*
 * 디버그를 위해 url을 메시지로 출력해본다.
 * 역시 파폭과 오페라에선 제대로 동작한다.
 * MSIE는 "오류:지정되지 않은 오류입니다."를 출력한다.
 * 물론 새 창도 열리지 않는다.
 */
function test2(url) {
  alert(url);
  var popup=window.open(url, 'foobar');
  popup.focus();
  return false;
}
/*
 * 잘 동작하는 코드 test2에서 alert부분만 뺐다.
 */
function test3(url) {
  var popup=window.open(url, 'foobar');
  popup.focus();
  return false;
}
// -->
    </script>
  </head>
 
  <body>
    <a href="/js_required.jsp" onclick="return test1('http://www.google.co.kr')">test1</a>
    <a href="/js_required.jsp" onclick="return test2('http://www.google.co.kr')">test2</a>
    <a href="/js_required.jsp" onclick="return test3('http://www.google.co.kr')">test3</a>
    <center>
  	처음에 공백이 들어간 윈도우 이름을 사용했다가... 제대로
  	동작하지 않아서 alert로 디버그하다가 몇시간 삽질을 하게
  	되었다. Orz. MSIE 정말 싫다.
    </center>
  </body>
</html>Forums: 


알려주셔서
알려주셔서 고맙습니다..
----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.xo.st
----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com
윈도우 2000에서 IE
윈도우 2000에서 IE 6.0.2800.1106 버전을 사용중입니다.
심심해서, 테스트해봤습니다.
첫번째 URL은 빈페이지가 나오네요. js_required.jsp 이 파일을 읽으려고 하는데, 파일이 없으니 빈페이지가 떳습니다.
두번째, URL은 http://www.google.co.kr 이라는 경고창이 뜨더니, 클릭하니까 새창으로 구글이 떳습니다.
세번째 URL은 바로 새창 뜨면서 구글이 떳습니다.
전 잘 나오는데, 무엇이 다른 결과를 낳게 했을까요?
뭐.. 전 최신 윈도우즈 업데이트가 완료된 상태이고요..
저도 신기하기도
저도 신기하기도 하고 당혹스러워서 올린 글입니다.
먼저, js_required.jsp는 javascript가 지원되지 않을 경우에만 페이지를 표시해서 javascript를 enable해야한다는 메시지를 뿌리게 만든 것입니다.
test1의 경우, onclick쪽을 잘 보시면 아시겠지만... 스크립트 에러가 나지 않으면, 새창이 떠야하는데, strWindowName에 공백이 포함되어있으면, MSIE는 에러로 처리(잘못된 인수)해서 새창이 안뜨는 것같습니다. FF, Opera는 똑똑하게도 그냥 잘 처리해주고요. 이건 머 spec문서에도 그렇게 되어있으므로 큰 문제는 아니죠.
test2는 완전 미스테리고요.
test3는 잘 동작하는 놈입니다. strWindowName에 공백이 없고, 선행하는 alert()도 없는 경우죠.
저의 실행환경은 Win XP Pro고요. MSIE 버전은 상기버전이며 야후툴바, DevToolBar 가 깔려있습니다.
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
댓글 달기