// jquery 처럼 파라미터 전달하고 체이닝방식으로 개발해봄
//소스 데이터 전송후 getValue 함수를 추가해야함~
var opDailogCallbackListner = [];$.fn.opDialog = function(_value, _id, _data){var tempId = this.selector.replace('#','');if($(this.selector).length != 1){//팝업창 객체 없음$('body').append('<iframe id="'+tempId+'" style="display: none;" data-value=undefined iframe>');}if(_value == 'open'){//배경 페이지 생성$(this.selector).css({"background-color": "rgba(0, 0, 0, 0.5)", "display":"block", "left": "0px", "top": "0px", "width": "100%", "height": "100%", "position": "absolute"});//다이어로그 페이지 이동var url = $(this.selector).attr('data-url');$(this.selector).attr('src',inavigator.getUrl(url));}else if(_value == 'close'){//버튼 이벤트 리스너에 등록된 id를 가진 이벤트가 있을경우에만 실행var removeIndex = -1;for (var index = 0; index < window.parent.opDailogCallbackListner.length; index++) {if(window.parent.opDailogCallbackListner[index].id == tempId){//close 이벤트시 선택이벤트있을때만 실행removeIndex = index;var events = window.parent.opDailogCallbackListner[index].event;for (var key in events) {if(_id == key){events[key](_data);}}}}if(removeIndex != -1){window.parent.opDailogCallbackListner.splice(removeIndex,1);}//딤처리 및 화면 초기화var frame = window.parent.document.getElementById(tempId);frame.parentNode.removeChild(frame);}else{//데이터 url 이벤트 셋팅$(this.selector).attr('data-url',_value.url);$(this.selector).attr('data-value', JSON.stringify(_value.data));opDailogCallbackListner.push({id:tempId , event:_value.buttons});}//요 리턴하는법이 체이닝 방식으로 할수있는법// $('a').func1().func2() 이렇게 호출가능return this;}//사용방법 팝업 생성$('#iframe0').opDialog({url : 'popup_test.html',data : { text : "전달"},buttons: {button0 : function(d){console.log(d)},button1 : function(d){console.log(d)}}}).opDialog('open');//사용방법 팝업 닫기$('#iframe0').opDialog('close', "button1" , {text :"리턴데이타" });
'javascript' 카테고리의 다른 글
input tag 키패드 입력 이벤트 catch (0) | 2018.12.03 |
---|---|
CSS 셀렉터 (0) | 2015.03.02 |
[위키] 데코레이터 패턴 (0) | 2012.12.27 |
[위키]팩토리 메서드 패턴 (0) | 2012.12.27 |
[Javascript] IOS WebView Ajax return page call init funtion issue (0) | 2012.09.19 |