댓글 새로고침 버튼 만들기
궁금하다고 쪽지주신 분이 계셔서.. 비교적 간단한거라 팁으로 올려드립니다.
CSS스피너와 jquery를 이용한 방법입니다.
(스케치북 게시판 기준)
1. HTML
_read.html 적당한 위치에 다음 태그를 넣어주세요
<button class="comment-reload" onclick="commentReload({$oDocument->document_srl})">
<span>댓글 새로고침</span>
<div class="loading-spinner"></div>
</button>
<span>댓글 새로고침</span>
<div class="loading-spinner"></div>
</button>
2. CSS
board.css 적당한 위치에 다음 코드를 넣어주세요.
.bd button.comment-reload {position:relative; width:100px; height:32px; background-color:#54639e; color:#fff; text-align:center; border:none}
.bd .loading-spinner {
z-index:2; position:absolute; display:none; border:3px solid #fff; border-right-color:transparent; border-radius:50%; box-sizing:border-box; -webkit-animation-duration:0.45s; -moz-animation-duration:0.45s; animation-duration:0.45s; -webkit-animation-iteration-count:infinite; -moz-animation-iteration-count:infinite; animation-iteration-count:infinite; -webkit-animation-name:rotate-forever; -moz-animation-name:rotate-forever; animation-name:rotate-forever; -webkit-animation-timing-function:linear; -moz-animation-timing-function:linear; animation-timing-function:linear;
height:20px; width:20px; top:6px; left:40px; background-color:#54639e;
}
@-webkit-keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg);transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
@-moz-keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg); transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
@keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg); transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
.bd .loading-spinner {
z-index:2; position:absolute; display:none; border:3px solid #fff; border-right-color:transparent; border-radius:50%; box-sizing:border-box; -webkit-animation-duration:0.45s; -moz-animation-duration:0.45s; animation-duration:0.45s; -webkit-animation-iteration-count:infinite; -moz-animation-iteration-count:infinite; animation-iteration-count:infinite; -webkit-animation-name:rotate-forever; -moz-animation-name:rotate-forever; animation-name:rotate-forever; -webkit-animation-timing-function:linear; -moz-animation-timing-function:linear; animation-timing-function:linear;
height:20px; width:20px; top:6px; left:40px; background-color:#54639e;
}
@-webkit-keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg);transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
@-moz-keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg); transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
@keyframes rotate-forever {
0% {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg); transform: rotate(0deg)}
100% {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);-o-transform: rotate(360deg);transform: rotate(360deg)}
}
3. JS
board.js 맨 위에 다음 코드를 넣어주세요.
function commentReload(target_srl) {
var reqUrl = current_url.setQuery('mid', current_mid, 'document_srl', target_srl);
jQuery('.loading-spinner').show();
jQuery('.comment-reload > span').hide();
jQuery.ajax ({
url:reqUrl,
dataType:'html',
success: function(data) {
var a = jQuery(data),
b = a.find('#cmtPosition').html();
jQuery('#cmtPosition').html(b);
},
complete: function() {
setTimeout(function() {
jQuery('.loading-spinner').fadeOut();
jQuery('.comment-reload > span').fadeIn();
}, 500)
}
});
}
var reqUrl = current_url.setQuery('mid', current_mid, 'document_srl', target_srl);
jQuery('.loading-spinner').show();
jQuery('.comment-reload > span').hide();
jQuery.ajax ({
url:reqUrl,
dataType:'html',
success: function(data) {
var a = jQuery(data),
b = a.find('#cmtPosition').html();
jQuery('#cmtPosition').html(b);
},
complete: function() {
setTimeout(function() {
jQuery('.loading-spinner').fadeOut();
jQuery('.comment-reload > span').fadeIn();
}, 500)
}
});
}
잘 안되시는 분은 댓글로 질문주시면 답변 드리겠습니다.
댓글 61
flat모바일에 적용하고 싶은 분들 첨부한 js파일로 덮어주시면 댓글작성,댓글터치시레이어팝업 이상없습니다.
proto님께서 수정해주셨습니다.
이 파일에 ajax 처리가 되어있으니 js파일은 따로 건드리실 필요가 없구 html/css 작업만 하시면 됩니다.
한 가지 문제가 있네요. 다른 경우는 제대로 되는 거 같은데, "대댓글을 작성하던 도중" 새로고침 버튼을 누를 경우 더 이상 대댓글 창이 펼쳐지지 않네요. 다른 분들도 그런가요?
@웹지기
확인 좀 부탁드립니다
(그니까 대댓글을 입력하는 창을 띄우고 내용을 입력하던 도중에 새로고침 버튼을 누르면, 그 다음부터는 그 페이지 전체를 새로고침하기 전까지는 댓글 옆에 "댓글" 버튼을 눌러도 대댓글 창이 활성화가 안 된다는 뜻입니다.)
혹시 앞에 @간장게장 님이 말씀하신 댓글 안 달린다는 증상이 이런건가요?
(사실 이럴 일은 드물어서 별로 상관없을 수도 있긴 합니다. 저도 방금 아주 우연한 실수를 통해 깨달았네요. 애초에 댓글 쓰다가 그 버튼을 누를 일은 없어서...)말씀 하신대로 댓글에 대댓글을 달으려다가 이를 중단하고 새로고침을 누르면 다시 대댓글을 시도하면 댓글 창이 열리지 않죠. js 동작에 영향을 줄 수 밖에 없을 겁니다.
하지만 이런 경험을 할 경우는 극히 드물기도 하고 별 문제가 아닌것으로 판단하고 저는 그냥 넘깁니다.
어디가 가능한가요?
누르면 먹통이 되네요 ㅠㅠ
감사합니다