관리 메뉴

하츠의 꿈

인터넷 익스플로러(IE)의 염장질! 본문

엔지니어스 마인드/PHP

인터넷 익스플로러(IE)의 염장질!

명섭이 2010.01.12 15:09

같이 일하는 웹개발자에게 문자메시지 보내는 프로그램을 짜라고 했더니 며칠을 고민한다.

별것도 아닌데 며칠을 끙끙앓고 있길레, 뭣 때문이냐고 물으니 문제가 없는 웹페이지인데 한번 페지이를 부르면 무조건 리로드되어 2번이 실행된다는 것이다.

그럴리가 있냐고 소스를 보여달라고 했다.

 

소스는 아주간단했다.

<script>alert(1)</script><meta http-equiv="content-type" content="text/html; charset=euc-kr" />
<? php
.
.
.

 

위의 것 외에 아무것도 없다. 하도 이상해서 소스에서 이것 저것 다 빼봐도 계속 같은 증상이 나타난다는 것이다.

앞에 <script>...</script> 부분은 2번 페이지가 열리는 지 확인하려고 넣은 것일 뿐 의미없다. (옆의 이미지)

 

그럴리가 있나 하고 직접 테스트를 해 보니 정말 페이지가 2번 불러진다.

html 좀 아는 사람이라면 <meta http-equiv="content-type" content="text/html; charset=euc-kr"> 는 html 페이지의 헤더 부분에 넣어서 언어를 지정하는 표준적인 방법이라는 것을 아실 것이다. 그런데 그것이 에러?

 

테스트하던 브라우저는 인터넷 익스플로러였다. 혹시나 해서 파이어폭스에서 같은 페이지를 불러보니 아무런 문제가 없다-_-;;

이런 빌어먹을! 인터넷 익스플로러 버그인가 보다.

 

이런 기본적인 것에서 에러를 일으키다니...

괜히 개발자만 나무랐다.

 

희한하게도 브라우저의 주소입력란에 해당 페이지를 입력하고 엔터를 쳐서 접속하면 페이지를 2번 부르는 에러가 발생하고, 불러진 페이지에서 F5를 눌러 새로고침을 하면 리로드하지 않는다.

 

테스트한 브라우저는 인터넷 익스플로러7, 인터넷 익스플로러8, 파이어폭스3 였고, 인터넷익스플로러 2개의 버전에서는 같은 오류가 발생했다.

 

익스플로러9이 나온다는 데 좀 나아질런지...

9 Comments
  • 프로필사진 BlogIcon 키넷 2010.01.12 15:31 신고 XHTML 기준으로 태그를 닫아야 표준이지 않나요?
    <meta http-equiv="content-type" content="text/html; charset=euc-kr" />
    솔직히 이게 오류의 원인인지는 잘 모르겠습니다만...
  • 프로필사진 BlogIcon 명섭이 2010.01.12 17:31 신고 태그를 적을 때 실수가 있었네요. 감사합니다.
    하지만, 뒤에 태그를 닫아도 같은 결과가 나온답니다^^;;
  • 프로필사진 봉두난발 2010.01.12 19:26 신고 script 태그를 meta 태그 뒤로 보내서 해보세요.

    <meta http-equiv="content-type" content="text/html; charset=euc-kr" /><script>alert(1)</script>
  • 프로필사진 BlogIcon 명섭이 2010.01.12 19:53 신고 스크립트는 리로드되는 것을 시각적으로 확인하기 위해서 넣은 것 뿐이에요. 뒤에 넣으면 순식간에 리로드되기 때문에 확인이 어렵습니다.
    그것을 빼도 리로드되구요-_-;;
  • 프로필사진 봉두난발 2010.01.13 00:00 신고 일반적인 웹페이지의 meta 태그 뒷부분에 java script 로 브라우저 버전체크를 해봤는데 한번만 실행되고 앞부분에 넣으면 두번 실행되길래 그때문인줄 알았더니 아닌가보군요. -__-;;

    뒤에 넣으면 순식간에 리로드 된다는 말씀은 스크립트 실행되기 이전에 이미 리로드 된다는 말씀이신가요?

    그럼... 현재 익스플로러에서 보여지는 상당수의 웹페이지들이 우리도 모르는사이에 두번씩 로드된다는 얘기가 되는건가요... 커헉...
  • 프로필사진 BlogIcon 명섭이 2010.01.13 00:37 신고 그건 아니예요. 아직 어떤 경우에 그런 것인지 모르겠어요.
    대부분의 사이트에서 사용하는 태그라서 아무 생각없이 써왔는데 이런 일을 당하니 좀 황당하네요.
    지금 이유를 찾고 있답니다. 찾으면 글을 수정해 놓을께요~
  • 프로필사진 갈기룩 2010.01.14 14:11 신고 에, 제가 알기론...
    meta 태그를 통해 content-type을 지정할 때 말이죠.
    특히나 charset이 지정된 경우에는요

    브라우저가 인코딩을 바꿔 파싱해야 하기 때문에 저 부분을 만나면 처음부터 다시 파싱한다더군요.
    그래서 가능한 content-type은 상단에 놓으라고 하구요.

    IE는 단순히 처음부터 다시 로드할 뿐이고, FF는 이미 실행한 부분은 놔두고 로드하는 것 같네요.
    참고로 script를 저거 뒤에다 놓으면 IE8이나 FF나 메시지가 한 번만 뜹니다.
  • 프로필사진 BlogIcon 명섭이 2010.01.14 23:13 신고 meta 태그를 헤더에 넣고 실행을 했고요.
    특히나 charset은 가장 먼저 선언을 합니다.
    그런데도 이상하게 2번 페이지가 로드됩니다.
    글에서 말한 것처럼 문자메시지 보내는 프로그램을 짯는데 2번 보내져서 문제가 있는 것을 알았죠.
    하지만, 다른 곳에서 사용할 때는 문제가 없어요.
    도대체 무슨 일인지 모르겠네요...
    조언 감사합니다. 편안한 밤 되세요~
  • 프로필사진 태성이 2010.03.17 18:05 신고 저도 갈기룩 님과 같은 의견입니다. IE 특성상 charset이 정의되어 있는 경우 두번 파싱이 이루워집니다. 물론 charset이 설정되지 않았을 경우에는 IE가 가장 적절한 인코딩을 찾아 처리하는 방식입니다.

    그런 이유가 가장 크지 않을까 싶습니다. :)
댓글쓰기 폼