Category Archives: JavaScript

IE7에서 다른 문서(document)의 객체간에 jQuery의 append()를 사용했을 경우의 스크립트 에러에 대하여

By | 3월 6, 2013

* 개요    이 에러는 오직 IE7에서만 발생하는 에러이다.   서로 다른 문서(ex: 다른 프레임)의 객체간에 jQuery의 append()를 사용했을 경우    스크립트 에러가 발생하는 것이다. * 소스 (오류 상황)    – $(‘#mainBox’, mainFrameDoc).append( $(‘#topBox’, topFrameDoc).children().clone() ); * 해결    – 원인을 정확히 파악한 근본적인 해결책은 아니지만 workaround로서 innerHTML로 처리함.      (innerHTML의 경우 1 depth 아래로 들어가는 것에 주의한다.)… Read More »

window 객체의 screenTop, screenLeft, screenX, screenY 속성에 대하여

By | 2월 22, 2013

이 속성들은, 윈도우 바탕화면의 왼쪽 위를 기준으로 삼아 window 객체의 좌표를 측정하는 것들이다. 기본적으로는 screenTop, screenLeft 를 사용하지만,  FireFox에는 해당 속성이 없어서 screenX, screenY를 사용한다. 그런데 문제는, 각 브라우저에서 위의 값들이 의미하는 바가 다르다는 것이다. 좀 더 테스트를 해 봐야 알겠지만… 프레임셋으로 구성된 화면을 각 브라우저에서 호출하면,  IE에서는 각 프레임을 구성하는 window 객체를 대상으로 좌표를… Read More »

window.name 을 설정했다가 없앴을 때에도 계속 설정한 name이 남아 있는 이유

By | 2월 15, 2013

생각해 보니 window 객체는 DOM이 아니라 BOM(Browser Object Model)이었다. 그러므로 객체에 셋팅한 프로퍼티가, 문서 단위로 reload 되는 것이 아니라, 브라우저 단위로 reload 되는 것이었던 것이었다!! 따라서 window 객체에 name을 계속 셋팅하면 계속 갱신되지만, name을 셋팅 했다가 name을 셋팅한 구문을 제거한다고 해도, 문서가 reload 되는 것에 관계 없이 브라우저에 해당 정보가 남아있으므로  name이 지워지지 않았던 것이었다. 그러므로… Read More »

jQuery TreeView 플러그인 사용시, IE7 (혹은 호환성모드)에서 트리가 깨지는 경우

By | 2월 13, 2013

※ 완벽한 해결책은 아니지만, 다음의 방법으로 일단 깨지는 것을 막을 수 있다. * 트리가 만들어지는 페이지에 다음의 스타일 추가      <style type=”text/css”>       ul, li { zoom: 1 }   </style> * 완벽하지 않다고 한 이유는, 트리의 2depth 이상에서 트리를 펼칠 때 트리가 약간 (1픽셀 정도) 위로   움직이는 현상이 있었기 때문이다. (IE7 혹은 호환성보기에서만)

jQuery UI의 dialog 위젯으로 로딩이미지 생성시, 오페라 브라우저 (opera)에서 빨간 테두리가 생기는 현상

By | 1월 31, 2013

* 오페라 브라우저는 포커스가 간 엘리먼트에 빨간 테두리를 쳐 버리는 특징이 있는 것 같다.   검색을 조금 해 보니 이것은 버그도 아니고 브라우저 설계시 그렇게 되도록 만든 것 같다.   jQuery UI의 dialog 위젯으로 로딩이미지를 만들었을 경우, 로딩이미지가 show() 될 때   로딩이미지의 부모 엘리먼트에 포커스가 가서 빨간 테두리가 그려지는 문제가 간혹 생겼는데,   그래서 부모 엘리먼트의 tabindex 속성… Read More »

body 엘리먼트를 display:none 처리한 후 jQuery의 show() 함수를 호출했을 때 파이어폭스(FireFox)에서 화면이 나타나지 않는 현상

By | 10월 20, 2012

* 원인    – body의 기본 display 속성은 block인데,     FireFox 에서는 show()를 해도 display속성이 block이 되지 않는갑다.      * 해결    – display 속성을 block으로 만든 후 show를 해 주었다.   – $(‘body’).css(‘display’, ‘block’).show();      * 참고 사항    – display:none이 아닌 $(‘body’).hide()를 사용해서 숨겼을 경우에는 별 문제가 없었다.    – jQuery 1.8.x 에서는… Read More »

IE에서 사용하는 window.event (이벤트 전역객체) 에 대하여

By | 8월 31, 2012

어디서 읽은 글이라 출처가 없다 -.-;;… 비 IE계열의 브라우저에서는 이벤트객체를 사용할 때, 이벤트 핸들러에 반드시 이벤트 객체를넘겨주어야 하는 반면에, IE에서는 마지막으로 발생한 이벤트에 대해서 window.event 라는 전역속성명으로이벤트 객체를 참조하는 것이 가능하다고 한다.

공백 등 특수문자가 들어있는 id를 사용하여 jQuery 객체를 생성할 때 어떻게 하면 될까?

By | 8월 24, 2012

답1) 엘리먼트 id에는 특수 문자를 쓰면 안된다 >, < !!! 답2) 하지만 어쩔 수 없는 경우란 게 있잖아… (-,.   –  ) …       => attribute명으로 참조할 경우 그 안에서 문자열을 따옴표로 감쌀 수 있기 때문에 참조가 가능하다!!          (예: $(“div[id=’content Module’]” )            => 위와 같이 쓰면… Read More »

jQuery의 $obj.data() 메서드 사용 예시

By | 8월 14, 2012

$(‘#reqTable’).data(‘A’, ‘111’); //데이터 셋팅 $(‘#reqTable’).data(‘B’, ‘222’); $(‘#reqTable’).data(‘C’, ‘333’); $(‘#reqTable’).removeData(‘A’);  //특정 데이터 삭제        $(‘#reqTable’).data(‘B’)); //특정 데이터 리턴        $(‘#reqTable’).removeData(); //전체 데이터 삭제    $(‘#reqTable’).data()); //전체 데이터 리턴

jQuery 이벤트 스로틀링 플러그인 (event throttling)

By | 8월 8, 2012

http://benalman.com/projects/jquery-throttle-debounce-plugin/  – ajax call 처리 등을 위해서 : debounce() 사용- 리사이즈(resize), 스크롤링(scrolling) 처리 등을 위해서 : throttle() 사용- 해당 함수들을 실행하면 함수가 실행되는 것이 아니라 함수 자체를 리턴함에 유의한다.

window.open() 으로 팝업을 호출했을 때 팝업이 부모창 뒤로 숨는 현상 방지

By | 7월 26, 2012

* 문제해결의 요점은 “팝업에 포커스를 준다” 는 것이다.   그래서 다음과 같이 할 수 있을 듯 하다.    (1) 팝업페이지의 onload 스크립트에서 다음의 코드 호출         window.focus();    (2) 부모페이지의 window.open()의 리턴을 받아서 다음의 코드 호출          – 그러나 이 코드는 준비되자마자 호출할 수 없고, 팝업의 렌더링 시간을 예측하여    … Read More »

jQuery UI의 버튼()이 있는 페이지에서 input text에 엔터키를 입력했을 때 form 내의 첫번째 버튼이 클릭되어 함수가 실행되는 경우

By | 7월 23, 2012

* 현상    form 안에 조회조건 input text와 jQuery-UI의 button이 있다.    (form은 onsubmit=”return false” 처리되어 있는 상태임)   input text 에 조회조건을 입력하고 엔터키를 입력하니 button에 바인딩된 함수가 실행되었다.-.-;;   keycode == 13 이런 이벤트바인딩을 해 준 것도 아닌데 어떻게 이렇게 된단 말인가!! * 원인규명    원인을 찾기 힘들었던 이유는 form에 이미 return false가 되어 있기 때문이었다.   위… Read More »