jquery 플러그인 좀도와주세요 ㅜㅜ
제가alert, confirm, prompt을 제이쿼리로 오버라이드 해서
메세지 창의 레이아웃을 변경하고싶어서 소스를 작성햇는데
메세지창이 뜰때 브라우저가 멈춤 상태가 되고 거기서 확인이나 취소를 눌러야
다시 브라우저가 활성화 되는 기능이 뭔지 몰라 한참을 찾아 다녔는데요
jalert 보니 재귀함수를 쓰더라구요
이게 맞는건지 맞는다면
제가 만든 소스가 왜 안되는지 문제를 좀 지적 좀 부탁드립니다.
jQuery.fn.Wo_msg = function (options) { var defaults = { speed:250, bg:"rgba(40, 40, 40, 0.8)", radius:6, width:300, height:180, popup:"background:white; border:0px;", prompt:"background:white; border:0px;", approve:"width: 90px; height:30px; background:#F39C12; color:white; border:0px;", cancel:"width: 90px; height:30px; background:#89C4F4; color:white; border:0px;", approve_value:"확인", cancel_value:"취소"}; var settings = $.extend({}, defaults, options); _content = function(type,msg){ var cancel=""; var approve = ""; approve = ""; cancel = ""; input = ""; if(type == "confirm"){ cancel = ""; }//if END if(type == "prompt"){ input = ""; }//if END $("body").append(""+msg+input+""+approve + cancel+""); _show(); }//_content END _view = function(msg, type, callback){ switch(type){ case "alert" : _content(type,msg); $("#Wo_approve").on("click",function() {if( callback ) callback(true); _close();}); break; case "confirm" : _content(type,msg); $("#Wo_approve").on("click",function() {if( callback ) callback(true); _close();}); $("#Wo_cancel").on("click",function() {if( callback ) callback(false); _close();}); break; case "prompt" : _content(type,msg); $("#Wo_approve").on("click",function(){ var value = $("#Wo_prompt_text").val(); if( callback ) callback(value); _close(); }); break; }//switch END }// _viewEND _show = function(){ $("#Wo_FixedBg").fadeIn(settings.speed); }// _show END _close = function(){ $("#Wo_FixedBg").fadeOut(settings.speed,function(){ $("#Wo_FixedBg").remove() }); }// _close END window.alert = function(message, callback) { _view(message, "alert", function(result) { if( callback ) callback(result); }); }// window.alert END window.confirm = function(message, callback) { _view(message, "confirm", function(result) { if( callback ) callback(result); }); }// window.confirm END window.prompt = function(message, callback) { _view(message, "prompt", function(result) { if( callback ) callback(result); }); }// window.prompt END }
답변 2개
이해했습니다.
http://jsfiddle.net/27tnLcv2/8/
위 내용을 참고해 보세요.
테스트 때문에 위의 소스코드 중, alert 관련 부분은 주석처리 하였습니다.
아래 주석 이하를 참고하시면 될 것 같습니다.
/***#################### 플러그인 이하 ###############################***/
답변에 대한 댓글 2개
되어있어, 해당 플러그인으로는 원하시는 내용이 힘들 것으로 보입니다.
브라우저의 confirm 을 가로채어, 다른 기능을 실행한다면 위와 같이 하는 것이 맞고, 첨부해주신 플러그인을
분석해 보아도, 그렇게 사용하게끔 되어 있네요 :-)
댓글을 작성하려면 로그인이 필요합니다.
테스트를 해 보니, 작동에 문제가 없는 것 같습니다 :-)
플러그인 형태로 개발하셨으므로, 플러그인 호출이 안된 것이 아닌가 싶네요.
위 함수를 크롬 브라우저 콘솔에 붙인 후,
document 에 플러그인을 추가해 주었습니다.
$(document).ready(function(e) {
$(document).Wo_msg({}); //위 플러그인 실행
});
이후, 원하는 곳에서 alert("test"); 또는 confirm("test"); 실행
팝업 이상 없이 뜸
문제 없어 보이네요 :-)
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인