사용자 이벤트가 발생할 때마다 특정 테이블의 ROW를 show, hide 해줘야 할 경우가 있다.


$("input[name=autoType]").click(function() {

            if ( $(this).val() == 1 ) {

                $("#autoType_2, #autoType_3, #autoType_sub").hide();

            }

            else if ( $(this).val() == 2 ) {

                $("#autoType_2, #autoType_sub").show(); $("#autoType_3").hide();

            }

            else {

            $("#autoType_3, #autoType_sub").show(); $("#autoType_2").hide();

            }

        });


....

<table>    

    <colgroup>

        <col width="120" />

        <col />

    </colgroup>

    <tr id="authType_2"> .... </tr>


    <tr id="authType_3"> .... </tr>


    <tr id="authType_sub"> .... </tr>

....

</table>


위 코드는 정해진 엘리먼트 클릭 시 클릭한 값에 대응하는 ID 기반의 엘리먼트 요소를 찾아서 화면에서 보이거나 숨기는 코드이다.


IE를 제외하고 의도한데로 모두 잘 동작한다. 그러나 IE7 및 IE8, 9, 10 버전 호환성 보기에서 show, hide 되는 테이블 ROW의 border가 없어지지 않고 화면에 잔상으로 남는 경우가 생긴다. (귀차니즘으로 화면캡쳐는 생략 ㅠㅠ)


CSS도 건드려보고 jQuery API로 개삽질을 해봤으나 해결방법은 의외였다.


<table>    

    <!-- <colgroup>

        <col width="120" />

        <col />

    </colgroup> -->

    <tr id="authType_2"> .... </tr>


    <tr id="authType_3"> .... </tr>


    <tr id="authType_sub"> .... </tr>

....

</table>


위와같이 column 형식 선언부를 없애주면 잘 동작한다. 이런 개 씨X랄 메롱스런 IE !!







IE8 이하 버전에서 jQuery Validation Plugin 사용 시 아래 에러가 발생함


SCRIPT3: 구성원이 없습니다.

 

jquery-1.6.4.min.js, 줄 2 문자 29472


구글신에 따르면 jquery.validate.js 파일에서 아래 부분을 수정하면 된다.

기존
// Add novalidate tag if HTML5.
this.attr('novalidate', 'novalidate');

수정
if (!$.browser.msie || $.browser.version > 8) {
    // Add novalidate tag if HTML5.
    this.attr('novalidate', 'novalidate');
}


클라이언트단

$.getJSON( 

    "http://www.somesite.co.kr/api/index.jsp?callback=?", 

    {

        param1: encodeURIComponent("한글")

        parma2: ABCD

    }

);


서버단

java.net.URLDecoder.decode( request.getParameter("param1"), "UTF-8" );


IE9에서 내용이 많은 Big 테이블을 Ajax로 불러들일대 Cell이 한 칸씩 밀리는 버그가 있다.

<td> 사이에 공백이나 개행문자가 있으면 발생한다.

아래와 같이 해결한다. (jQuery를 사용할 경우의 코드임)

if ( $.browser.msie ) {
    var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g');
    $('#테이블_감싼_DIV').html( ($('#테이블_감싼_DIV').html() + "").replace(expr, '><')  );
}

※ new RegExp('>[ \t\r\n\v\f]*<', 'g'); 이 정규식은 HTML 코드 >와 < 사이에 있는 공백, 탭, 개행문자 등을 모두 제거하라는 의미다.

여러모로 IE는 우리 개발자를 사랑하신다. ㅠㅠ

출처 : http://stackoverflow.com/questions/7267014/ie9-table-has-random-rows-which-are-offset-at-random-columns


파이어폭스에서 jQuery 기반의 웹 어플리케이션 개발 시 아래 환경에서 발생하는 에러이다.

파이어폭스 플러그인으로 FirebugAdblock plus를 설치한 경우 발생

원인은 Adblock plus에서 필터링되는 특정 구문을 사용하거나 경로를 호출했기 때문이다.

localhost에서 개발중이라면 아래와 같은 예외규칙을 Adblock plus에 추가하자.


파이어폭스에서 원인을 알 수 없는 스크립트 오류가 발생할 경우, IE 등의 타 브라우저에서는 정상 작동한다면 90% 이상이 파이어폭스 플러그인 문제일 가능성이 농후하다.

덕분에 오늘도 삽질했다.



+ Recent posts