Posted
Filed under Htm&Javascript
ie 에서는 style:display:hidden 이 먹히질 않습니다.
그래서 visibility:hidden 을 사용 하면 ie/ff/ 등등 기타 브라우저에서도 잘 동작 합니다.
2011/06/14 21:25 2011/06/14 21:25
Posted
Filed under Htm&Javascript

//숫자체크  
function checkNum(obj){
     if (obj == null || isNaN(obj.value)){
     obj.focus();
     return false;
    }   
    return true;
   }

  //핸드폰 체크
function hpCheck(obj1,obj2,obj3){
    var hp1 = obj1.value.replace(' ','');
    var hp2 = obj2.value.replace(' ','');
    var hp3 = obj3.value.replace(' ','');
    
    var arr_hp2 = new Array(hp2.length);
    var arr_hp3 = new Array(hp3.length);
    var i=0;
    for (i=0;i<hp2.length;i++){
     arr_hp2[i] = hp2.charAt(i);
    }
    for (i=0;i<hp3.length;i++){
     arr_hp3[i] = hp3.charAt(i);
    }    
 
    if (!checkNum(obj2))
     return false;

    if (hp2.length <=2)
     return false;
 
    if (!checkNum(obj3))
     return false;  
    if (hp3.length !=4)
     return false;      
    

    if (hp1 == '010')
    {
     if (hp2.length == 4)
      return true;
     else
      return false;
    }else if (hp1 == '011' || hp1 == '016' || hp1 == '017' || hp1 == '018' || hp1 == '019'){
     if (arr_hp2[0] == '1' || arr_hp2[0]=='9')
     {
      if (hp2.length == 4)
       return true;
      else
       return false;
     }else if (arr_hp2[0] == '0'){
      return false;
     }else{
       if (hp2.length == 3)
       return true;
      else
       return false;     
     }
    }
    return true;
   }


2011/06/12 14:32 2011/06/12 14:32
Posted
Filed under Htm&Javascript
  • 오브젝티브-C에서는 동적형에서 사용할 수 있는 몇 가지 중요한 메소드가 있다.
    • -(BOOL) isKindOfClass: classObj 이 객체가 ClassObj의 멤버이거나 상속을 받은 하위클래스인지?
      -(BOOL) isMemberOfClass: classObj 이 객체가 classObj의 멤버인지
      -(BOOL) respondsToSelector: selector 이 객체가 selector란 이름의 메소드를 가지고 있는지?
      +(BOOL) instancesRespondToSelector: selector 이 클래스로 만들어진 객체가 지정된 셀렉터에 반응할 능력이 있는지?
      -(id) performSelector: selector 객체의 지정된 셀렉터를 실행한다.
    2011/06/07 23:57 2011/06/07 23:57
    Posted
    Filed under Htm&Javascript

    현재 윈도우에 iframe을 작업하고 iframe내 요소에 접근하기 위해서는
     
    document.getElementById('iframe_id').contentWindow.document.getElementById("element_id")
     
    또는
     
    document.getElementById('iframe_id').contentWindow.document.폼이름.파람이름.value
     
    와 같이 contentWindow로 iframe의 윈도우를 지정해 주어야합니다


    2011/05/19 21:20 2011/05/19 21:20
    Posted
    Filed under Htm&Javascript
     

    Cross Browser(User-agent) 서비스 개발

    From Byungsun

    Jump to: navigation, search

    Contents

    [hide]

    User-agent 필터링을 하는 이유

    국내 포털에서 제공하는 모바일용 페이지는 아래와 같은 이유로 User-agent를 필터링하여 기본적으로 1개의 HTML 페이지여러개의 CSS 및 메타태그를 적용하여 서비스를 제공하고 있음.

    • 다양한 단말을 지원해야 함
    • 구축/운영의 편의/신속성
    • 단말별로 해상도/화면크기 및 DPI(Dots per Inch)가 상이하여 1개의 CSS로 모든 기기 지원 불가능

    동일 CSS를 사용하는 Device이나 서로 렌더링이 상이할 경우 Device의 판매량, Telco 전략 단말 여부에 따라 우선 순위를 지정하여 순위가 높은 Device에 최적화 함.

    따라서 썸네일, 서버 자동생성 이미지(증권 차트 등)을 제외한 타이틀, 버튼은 <img src="" />요소를 사용하지 않고 IR기법으로 CSS의 background 속성을 이용하여 사용하며 또한 이미지 깨짐 현상을 우회하기 위하여 최대한 이미지가 아닌 텍스트를 활용 하는 것을 권장함

    브라우저 분기에 Media Queries를 사용하지 않는 이유

    Media Queries는 해상도를 기준으로 CSS를 분기하는데 실제 페이지들은 어플리케이션 링크 또는 브라우저 자체의 HTML/CSS/JS 구현 정도에 따라 특화되어 만들어지므로 해상도를 기준으로 분기하는 것보다 User-agent를 통해 플랫폼 또는 단말별로 명확하게 분기하는 것이 더 정확한 방법임

    브라우저 / 단말별 User-agent

    • Apple Safari
      • iPhone : Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
      • iPod Touch : Mozilla/5.0 (iPod; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
      • iPad : Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
    • Android
      • Galaxy-S : Mozilla/5.0 (Linux; U; Android 2.1; ko-kr; SHW-M110S Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
      • Moto-Qwerty : Mozilla/5.0 (Linux; U; Android 2.1-update1; ko-kr; A853 Build/SUSKT_U1_00.10.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
      • Optimus-one : Mozilla/5.0 (Linux; U; Android 2.2; ko-kr; LG-KU3700 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
    • Opera Mobile9 (설정에서 2가지중 선택 가능, 기본값은 데스크탑 컴퓨터)
      • M490(옴니아) 휴대용 기기 모드 : 기기명/(null)IC4 (compatible;MSIE 6.0; Windows CE; PPC) Opera 9.5
      • M490(옴니아) 데스크탑 컴퓨터 모드 : Opera/9.5 (Windows NT 5.1; SKT; U; en)
    • Infraware Polaris6
      • LH2300(아르고) 초기 : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0); lgtelecom
      • LH2300(아르고) : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; 800*480;POLARIS 6.0;em1.0;lgtelecom;EB10-20080520-702676908;LG-LH2300;0);
      • SPH-W6050(햅틱온) : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; 800*480;POLARIS 6.0;em1.0;lgtelecom;EB10-200090512-709515955;SPH-W6050;0);
      • SCH-W740(햅틱8M) : Mozilla/4.0 (compatible; MSIE 6.0; WIPI 2.0);800*480;NATEBrowser 5.0;em1.0
    • uZard WebSurfing (Webviewer)
      • LH2300(아르고) : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; 800*480;WV01.00.01;;lgtelecom;EB10-20080520-702676908;LG-LH2300;0)
      • SPH-W6050(햅틱온) : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; 800*480;WV01.00.01;;lgtelecom;EB10-20090512-709515955;SPH-W6050;0);
      • SCH-W740(햅틱8M) : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; Trident/4.0)
      • canU801Ex : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;480*752;WV01.00.06;;lgtelecom;EB10-20080000-200900001;canU801Ex;)
      • M490(옴니아), SONY X1 : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2); WOW64; Trident/4.0
      • M4800(미라지) : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1); uZard; KTF

    Meta Tag, CSS

    DPI 이슈의 우회와 브라우저가 제공하는 기능의 제어를 위하여 사용

    Safari

    1 <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />
    2 <meta name="format-detection" content="telephone=no" />
    • viewport 속성을 사용하여 화면 비율을 100%로 고정하고 사용자의 임의 확대축소를 불가능하게 함
    • format-detection 속성을 사용하여 연속된 숫자의 자동 링크(전화걸기) 기능을 제한함

    1 *{-webkit-text-size-adjust:none;}
    • 브라우저가 폰트 사이즈를 강제로 조정하는 것을 방지함

    Android

    1 <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width, target-densityDpi=device-dpi" />
    • viewport 속성을 사용하여 화면 비율을 100%로 고정하고 사용자의 임의 확대축소를 불가능하게 함

    Opera9.5 Mobile

    1 <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
    • viewport 속성을 사용하여 화면 비율을 100%로 고정하고 사용자의 임의 확대축소를 불가능하게 함

    알려진 문제점

    공통

    • 유선과 다르게 무선은 네트웍 속도가 느리고, 단말 자체의 처리 속도가 느려서 CSS를 외부 파일로 제공하거나 다량의 속성을 인터널로 삽입하면 CSS가 로드되지 않은 HTML페이지가 뿌려졌다가 CSS가 입혀지는 과정을 사용자가 보게 됨
    • 단말에 탑재된 폰트의 경우 대부분 볼드와 볼드가 아닌 서체가 크게 다르지 않아 기획/디자인상에서 강조하려는 부분은 폰트사이즈 및 컬러를 이용하는 것이 권장됨

    Safari

    • CSS속성 overflow:scroll을 이용한 페이지 내부 스크롤바 생성이 불가능함 (스크롤바 자체를 표시하지 않음)
      • 투핑거 드래그로 제어는 가능하나 대부분의 유저들이 해당 기능을 인지하고 있지 않음

    Android

    • CSS속성 overflow:scroll을 이용한 페이지 내부 스크롤바 생성이 불가능함 (스크롤바 자체를 표시하지 않음)

    IE와 동일한 User-agent를 제공하는 모바일 브라우저

    • 초기에 배포된 Webviewer, WebSurfing의 경우 일반PC에 탑재된 IE6또는 7과 동일한 User-agent를 제공하거나, 단말의 모델 정보나 해상도 정보등을 추가하지 않은 경우가 있어 필터링이 불가능한 경우가 있음
    • 따라서 현재 Webviewer, WebSurfing가 탑재된 단말 중 800px보다 큰 해상도의 단말은 출시가 안되었으므로 User-agent필터링에 실패할 경우 기본으로 가로를 800px으로 제한하는 웹뷰어용 CSS를 제공함
    • 일반PC인지 모바일인지 완벽하게 분리가 불가능하므로 이전의 WAP이나 PDA 전용 페이지를 PC에서 접근시 별도의 소개 페이지로 자동 이동시키는 것과 같은 플로우는 불가능함

    User-agent 체크 모듈 샘플(PHP)

    01 <?php
    02 $userAgent = $_SERVER['HTTP_USER_AGENT'];
    03 if ( strstr($userAgent, 'iPhone') || strstr($userAgent, 'iPod') || strstr($userAgent, 'iPad') ) {
    04     //Safari
    05 } else if ( strstr($userAgent, 'Android') ) {
    06     //Android
    07 } else if ( strstr($userAgent, 'Opera') ) {
    08     //Opera
    09 } else if ( strstr($userAgent, 'lgtelecom') ) {
    10     if ( strstr($userAgent, 'WV01') ) {
    11         //Web viewer on LGT
    12         if ( strstr($userAgent, '480*') ) { //W480
    13             echo '<style type="text/css">#container{width:480px;}</style>';
    14         } else { //W800
    15             echo '<style type="text/css">#container{width:800px;}</style>';
    16         }  
    17     } else {
    18         //Polaris on LGT
    19     }
    20 } else if ( strstr($userAgent, 'NateBrower') ) { //polaris on SKT
    21     //Polaris on SKT
    22 } else {
    23     //Other
    24     if ( strstr($userAgent, '480*') ) { //W480
    25         echo '<style type="text/css">#container{width:480px;}</style>';
    26     } else { //W800
    27         echo '<style type="text/css">#container{width:800px;}</style>';
    28     }
    29 }
    30 ?

    2011/04/15 11:48 2011/04/15 11:48
    Posted
    Filed under Htm&Javascript

    function is_flash(){
     var _is = false;
     if(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) {
      _is=false;
     }
     else {
      _is=true;
     }
    }

    2011/04/14 20:56 2011/04/14 20:56
    Posted
    Filed under Htm&Javascript

    table 속성인 cellspacing, cellpadding을 css로 사용하기

    <table cellpadding="0" cellspacing="0" border="0">

    위 소스 중 cellpadding="0" cellspacing="0"을 css에서 사용하려면

    다음과 같이 한다.

    1>

    table{border-collapse:collapse;}

    => 이렇게 하는 경우 약간의 여백들이 생기게 된다.

    2>

    table {padding:0; border-spacing:0px; border:0; border-collapse:collapse;}
    th, td {padding:0px;}

    2011/04/13 03:31 2011/04/13 03:31
    Posted
    Filed under Htm&Javascript

    JavaScript event.keyCode 자바스크립트 이벤트 키코드표

    ---------------------------------------
    키코드표
    ---------------------------------------
    ←(백스페이스) = 8
    TAB = 9
    ENTER = 13
    SHIFT = 16
    CTRL = 17
    ALT = 18
    PAUSEBREAK = 19
    CAPSLOOK = 20
    한/영 = 21
    한자 = 25
    ESC = 27
    스페이스 = 32

    PAGEUP = 33
    PAGEDN = 34
    END = 35
    HOME =36
    ←(중간) = 37
    ↑(중간) = 38
    →(중간) = 39
    ↓(중간) = 40
    INSERT = 45
    DELETE = 46

    0 = 48
    1 = 49
    2 = 50
    3 = 51
    4 = 52
    5 = 53
    6 = 54
    7 = 55
    8 = 56
    9 = 57

    A = 65
    B = 66
    C = 67
    D = 68
    E = 69
    F = 70
    G = 71
    H = 72
    I = 73
    J = 74
    K = 75
    L = 76
    M = 77
    N = 78
    O = 79
    P = 80
    Q = 81
    R = 82
    S = 83
    T = 84
    U = 85
    V = 86
    W = 87
    X = 88
    Y = 89
    Z = 90

    윈도우(왼쪽) = 91
    윈도우(오른쪽) = 92
    기능키 = 93

    0(오른쪽) = 96
    1(오른쪽) = 97
    2(오른쪽) = 98
    3(오른쪽) = 99
    4(오른쪽) = 100
    5(오른쪽) = 101
    6(오른쪽) = 102
    7(오른쪽) = 103
    8(오른쪽) = 104
    9(오른쪽) = 105
    .(오른쪽) = 110
    /(오른쪽) = 111
    *(오른쪽) = 106
    +(오른쪽) = 107
    -(오른쪽) = 109

    F1 = 112
    F2 = 113
    F3 = 114
    F4 = 115
    F5 = 116
    F6 = 117
    F7 = 118
    F8 = 119
    F9 = 120
    F10 = 121
    F11 = 122
    F12 = 123

    NUMLOCK = 144
    SCROLLLOCK = 145
    =(중간) = 187
    -(중간) = 189
    `(왼쪽콤마) = 192
    \(중간) = 220
    --------------------코드값알기---------------------
    안녕하세요.
    event.keyCode를 사용하시는 분들중에서 코드를 몰라서 못쓰시는 분들이 있을것
    같아서 올립니다. 분명히 말씀드리지만 아시는 분들도 계실겁니다.
    모르는 분들을 위해 올리는 것입니다. 혹시나 아신다고 욕쓰고 그러지 마십시요.
    저번에도 알고리즘 하나 올렸는데 욕무지쓰셔서 속상했습니다..ㅠㅠ
    그럼 즐거운하루 되시고...

    그리고 코드를 알아낼수있는 방법은 다음과 같습니다.
    <html>
    <head>
    <script>
    function key_check(){
    alert!("키번호는 [" +event.keyCode+ "] 입니다.");
    }
    </script>
    </head>
    <body omKeyDown='key_check();'>
    알고싶은 키패드를 꽉! 눌러주세요...ㅡㅡ;
    </body>
    </html>
    -------------------사용법-------------------------
    필드 입력하고 나서 엔터 때리면 이벤트 발생
    event.keyCode 의 키표를 보고 어떤걸 누룰것이지?
    <input type="text" name="ccc"
    omKeyDown="javascript:if(event.keyCode==13){alert!('ok!');}" >

    ------------------주의---------------------------
    폼 안의 마지막 text를 입력한 후 이벤트를 실행하면 폼안의 값을 넘기거나 action 이 없을경우 reflesh 되는현상이 있다.
    이럴 경우 마지막 text 뒤에
    <input type="text" style="width:0; visibility:hidden;">
    이렇게 눈에 안보이는 text 박스를 한게 추가해주면 refresh 되지 않는다.

    2011/03/31 13:29 2011/03/31 13:29
    Posted
    Filed under Htm&Javascript

    [원문] : http://www.homejjang.com/09/border_collapse.php
    border-collapse는 테이블 또는 셀의 테두리선 표시방법을 지정하는 속성입니다.

    속성값으로는 collapse와 separate를 사용할 수 있습니다.

    • collapse : 서로 이웃하는 테이블이나 셀의 테두리선을 겹쳐서 표현 합니다.
    • separate : 기본값으로 서로 이웃하는 테이블이나 셀의 테두리선을 분리시켜 표현 합니다.
    <table width="90%" cellpadding="5" cellspacing="0" border="1" align="center" style="border-collapse:collapse; border:1px gray solid;">
    <tr>
     <td>border-collapse:collapse;</td>
    </tr>
    </table>

    위와 같이 border-collapse 속성갑을 collapse로 지정하고 border 속성을 추가적으로 지정하면 아래와 같이 깔끔한 테이블을 출력할 수 있습니다.

    border-collapse:collapse;

    border-collapse 속성은 테두리선의 표시방법만 지정하므로 반드시 border 속성으로 구체적인 테두리선의 스타일을 지정해 주어야 합니다.

    테이블의 셀이 많을때는 IE와 Firefox에서 조금 다른 모습으로 출력됩니다. IE에서는 추가적으로 TD element에 border 속성을 추가적으로 지정하면 됩니다.

    <table width="90%" cellpadding="5" cellspacing="0" border="1" align="center" style="border-collapse:collapse; border:1px gray solid;">
    <tr>
     <td style="border:1px gray solid;">HTML</td>
     <td style="border:1px gray solid;">Hypertext Markup Language</td>
    </tr>
    <tr>
     <td style="border:1px gray solid;">CSS</td>
     <td style="border:1px gray solid;">Cascading Style Sheet</td>
    </tr>
    </table>
    HTML Hypertext Markup Language
    CSS Cascading Style Sheet
    2011/03/15 03:59 2011/03/15 03:59
    Posted
    Filed under Htm&Javascript

    [원문] : http://seobangnim.com/zbxe/2905

    핵심은 eval 메서드 입니다.

    eval은 인수로 받은 문자열을 스크립트로 해석합니다.


    <script>
    function Test()
    {
     for(var i=0;i<4;i++)
     {
      eval("amt"+i+"="+i+"+100");
     }
     alert("변수 생성 완료");
    }

    function View()
    {
     try
     {
      alert(amt0);
      alert(amt1);
      alert(amt2);
      alert(amt3);
     }
     catch(e)
     {
      alert("변수가 생성되지 않았습니다.");
     }
    }
    </script>

    <input type="button" value="변수 생성" onClick="Test()" />
    <input type="button" value="변수 확인" onClick="View()" />

    2011/01/26 16:19 2011/01/26 16:19