'웹개발'에 해당되는 글 4건

  1. 2010.09.22 escape/encodeURI/encodeURIComponent
  2. 2010.03.14 IE6 png 파일 적용 시키기
  3. 2010.01.16 Object 올바른 사용법
  4. 2009.09.19 FleXcroll
자바스크립트에서 인코딩을 담당하는 함수입니다.

여기서 말하는 인코딩이란, 네트워크를 통해서 정보를 공유할 때 어떤 시스템에서나 읽을 수 있는 ASCII 문자로 바꿔주는 것을 말합니다. 모든 네트워크를 통한 전송에는 ASCII 문자가 기반이 되는데, 특히 한글이나 특수문자의 경우 이를 2진수 바이트코드로 변환해서 전송하면 받는 상대편의 시스템에 따라 잘못 해석되거나, 해석이 불가능할 수 있기 때문입니다.
이를 해결하기 위해 모든 시스템에서 공통으로 읽을 수 있는 ASCII 문자로 바꿔서 데이터를 전송할 필요가 있습니다.

1.escape()
아래와 같이 열거된 아스키문자가 아니라면 모두 유니코드 형식으로 변환합니다.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
@*-_+./
변환된 형식은 16진수 형식으로 표시되며 1바이트 문자는 %XX 형태로, 2바이트 문자는 %uXXXX 형태로 변환됩니다.
1바이트 문자는 빈칸(%20)을 들 수 있고, 2바이트 문자는 한글(%uD55C%uAE00)이 있을 수 있습니다.

가끔 인터넷검색을 하면 주소창에 %XX형식의 문자들이 들어있는 것을 볼 수 있는데, 이는 인코딩 된 것의 한 종류라고 볼 수 있습니다.

가끔은 홈페이지의 자바스크립트나 HTML 소스, 음원URL을 보기 힘들게 하기 위해 사용하기도 하지만, 이는 자바스크립트의 인코딩을 아는 자라면 어렵지 않게 풀어 사용할 수 있습니다.


2.encodeURI()
기본적으로는 escape()와 비슷한 동작을 하지만 인터넷 주소 표시에 쓰이는 특수문자들은 인코딩하지 않습니다.
인터넷 주소 표시 특수문자 : ; / = ? &  등
그래서 보통은 파라미터를 전달하는 인터넷주소(URL) 전체를 인코딩할 때 사용합니다.


3.encodeURIComponent()
기본적인 동작은 역시 escape()와 비슷하지만 인터넷 주소표시에 쓰이는 모든 문자를 추가로 인코딩합니다.

그래서 인터넷주소(URL) 전체를 인코딩할 때는 사용할 수 없고, 넘기는 필드 하나하나를 따로 인코딩할 때 사용합니다.
그 이유는 넘어가는 값이 text="test=&테스트" 이와 같이 text라는 필드 값이 test=&테스트인 경우 그냥 encodeURI()로 인코딩 하면, '=' 나 '&'는 인코딩되지 않아서 필드 값을 처리할 때 데이터 값이 아닌 여러 개의 필드를 넘기는 명령어로 인식할 수 있기 때문입니다.

하지만, "http://test.com/test.php?text=테스트" 와 같은 URL 전체를 encodeURIComponent()로 인코딩하게 되면 : / ? 를 모두 인코딩하여 주소를 인식할 수 없게 됩니다.



인코딩 값을 서버에서 디코딩 처리하고자 하실 때는

Java 경우 URLDecoder.decode(String, "UTF-8") / 여기서 UTF-8 은 HTML Page charset 입니다.
Posted by 갈가마귀
투명 이미지 png 파일을 크로스 웹브라우징 할 때 IE6에서만 적용이 안 되는 현상을 보실 수 있습니다.
외국에선 IE6이 점점 사라지곤 있다지만.. 아직까진 국내에서는 많이 사용되고 있는 귀찮은 브라우저이기에 번거롭지만 맞춰줘야겠지요.
될 수 있다면 표준 태그를 적용하여 해결하는 것이 이상적이겠지만.. 지원되는 방법은 CSS IE hack 이나 Javascript를 적용하는 방법밖엔 없습니다. ;; 그 외에 방법이 있다면 댓글을 남겨주시기 바랍니다.

1. 배경에 png 파일을 적용시킬 경우
1<style type="text/css">
2.bg_wrap {width:400px; height:300px; background:url('/images/bgd/login_wrap.png') no-repeat;}
3</style>
4 
5<!--[if IE 6]>
6<style type="text/css">
7.bg_wrap {background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/btd/login_wrap.png', sizingMethod='crop');}
8</style>
9<![endif]-->

1<style type="text/css">
2.bg_wrap {width:400px; height:300px; background:url('/images/bgd/login_wrap.png') no-repeat !important; background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/btd/login_wrap.png', sizingMethod='crop');}
3</style>

1<style type="text/css">
2.bg_wrap {width:400px; height:300px; background:url('/images/bgd/login_wrap.png') no-repeat; _background-image:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/bgd/login_wrap.png', sizingMethod='crop');}
3</style>


2. 이미지 태그에 png 파일을 적용시킬 경우
1<!--[if IE 6]>
2<style type="text/css">
3#tisotry {display:inline-block; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/btn/tistory_slander.png');}
4#tisotry img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}
5</style>
6<![endif]-->
7<div id="contentWrap">
8    <span id="tistory"><img src="/images/btn/tistory_slander.png" style="width: 50px; height: 15px;" alt="꿈을 꾸는 아이"></span>
9</div>


3. a 태그에 png 이미지 파일을 적용시킬 경우
01<style type="text/css">
02img {border:none;}
03#tistory {width:50px; height:15px; background:url(/images/btn/tisotry_slander.png) no-repeat;}
04</style>
05<!--[if IE 6]>
06<style type="text/css">
07#tisotry {background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/btn/tistory_slander.png', sizingMethod='crop');}
08</style>
09<![endif]-->
10<div id="contentWrap">
11    <div id="tisotry">
12        <a href="http://slander.tisotry.com/" title="꿈을 꾸는 아이 블로그로 이동합니다." target="_blank"><img src="/images/btn/tistory_slander.png" style="width: 50px; height: 15px;" alt="꿈을 꾸는 아이"></a>
13     </div>
14</div>
Posted by 갈가마귀


<object> 태그는 포함하고 있는 컨텐츠를 대체컨텐츠로 인식합니다.

1<object date="꿈을꾸는아이_thumb.png" type="image/png">
2    꿈을 꾸는 아이 썸네일 이미지입니다.
3</object>
브라우저에서는 type에 지정된 적절한 플러그인을 찾을 수 없을 때 포함하는 내용을 대체로 이용하게 됩니다.
<body> 태그 자식 태그로 바로 <object>를 사용할 경우는 드물겠지만, 사용한다면 대체컨텐츠를 <p> 태그로 묶어주는 것이 올바르다고 할 수 있겠습니다.

<object >태그 안에는 <object> 태그를 중첩해서 사용할 수도 있습니다.
01<!-- 플래시 플러그인 -->
02<object data="hello.swf" type="application/x-shockwave-flash">
03    <!-- PNG 이미지 -->
04    <object data="hello.png" type="images/png">
05        <!-- GIF 이미지 -->
06        <object data="hello.gif" type="images/gif">
07            <!-- 일반 text -->
08            <p>Hello!</p>
09        </object>
10    </object>
11</object>
브라우저에서 바깥 <object>부터 플러그인 접근 실행 시도하게 되며, 실패했을 때 안쪽의 <object>로 차례로 시도하게 됩니다. 각각의 <object>는 자신을 포함하는 상위의 <object>의 대체컨텐츠 역할을 하고 최종적으로 <p> 태그가 상위 GIF 이미지 <object> 태그의 대체 기능을 하게 됩니다.


Flash Object 올바른 사용 방법

개발편의상 HTML 태그보다는 구글코드에서 서비스 중인 swfobject.js를 즐겨 사용하곤 하지만, noscript 일 때 노출이 안 되므로 웹접근성을 고려하여 object 태그를 병행해서 사용하면 좋을 듯 싶습니다.
  1. Adobe 권고 방안 (매뉴얼 바로가기 for CS4)
  2. 1<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">
    2    <param name="movie" value="moviename.swf">
    3    <param name="play" value="true">
    4    <param name="loop" value="true">
    5    <param name="quality" value="high">
    6 
    7    <embed src="moviename.swf" width="100" height="100" play="true" loop="true" quality="high" pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"> </embed>
    8</object>
    ※ <embed> 태그는 IE 전용으므로 비권장 사항입니다.

  3. W3C 권고 방안 (매뉴얼 바로가기 for HTML 4.01)
  4. 1<object data="moviename.swf" type="application/x-shockwave-flash" width="100" height="100"></object>

    <object> 태그를 사용하게 되면 실행될 데이터의 type과 위치를 지정하는 data만으로도 flash 등을 불러올 수 있습니다. 하지만 IE는 data를 참조하여 flash player를 불러오지 못해 작동을 하지 않는 경우도 있습니다. 그래서 param으로 무비 정보를 적어주어야 합니다.
    1<object data="moviename.swf" type="application/x-shockwave-flash" width="100" height="100">
    2    <param name="movie" value="moviename.swf">
    3    <p>해당 컨텐츠를 보시려면 <a href="http://www.adobe.com/kr/products/flashplayer/">Flash Player</a>가 필요합니다.</p>
    4</object>
    <param> 태그를 추가하여 정상적으로 flash를 불러올 수 있습니다. 하지만 IE는 classid 가 없기 때문에 .swf 파일을 완전히 다운로드하기 전에는 실행되지 않습니다. 쉽게 스트리밍 기능이 작동을 하지 않아 프리로딩 기능을 사용할 수 없습니다.

  5. W3C + swfobjct
  6. 2번 W3C 권고 방안 <object> 태그를 id 가 부여된 <div> 태그 등으로 감싸 swfobject 로 cross browser 처리를 하면 됩니다.


물론 HTML5 가 표준 정립이 되고, 사용자 브라우저가 지원을 하는 세월이 온다면 위와 같은 방법은 불필요할지 모르겠습니다. ^^

Posted by 갈가마귀
해당 포스트는 데꾸벅님의 블로그에서 발췌한 내용으로 개인적으로 기억하기 쉽게 재정리한 내용입니다.

felXcroll 은 DIV 또는 IFRAME 영역에서 보여지는 스크롤바를 꾸며주는 자바스크립트이다.
CSS 로 색상만을 변경하는게 아니라 스크롤바를 이미지로 변경하여 보여지게끔 해준다.
크로스 브라우저를 지원하기에 일관성 있는 스크롤바를 보여지며 화면을 구성하고자 하는 디자이너나 퍼블리셔에겐 좋은 방법일 거 같다.

샘플 예제 및 사용방법은 HESIDO•com 안내되어 있으며 다운로드 역시 가능하다. 아쉽게도 라이센스는 유료다.
메모리 누수 시키지 않는다는 애니메이션 효과 스크립트 등 다양한 스크립트 소스와 포토샵 효과 예제도 포함되어 있다.


스크롤바가 변경되어 적용된 모습

등록된 스크립트 압축파일은 1.9.5f 버전으로 IE8 버그패치까지 적용되어 있다. 그 이후는? 후후
Posted by 갈가마귀
이전버튼 1 이전버튼