외부링크면 무조건 새창으로 열리게 하는 그런 기능의 자료가 있나요?
이거 은근히 신경쓰이죠...
운영자 입장에서는 외부사이트로 전환되면 다시 돌아오기 불편한 현재창에서 열리는게 별고 달갑지 않지요.
이거 혹시 자료가 ... 있을까요?
외부링크면 무조건 새창으로 열리게 하는 그런 기능의 자료가 있나요?
이거 은근히 신경쓰이죠...
운영자 입장에서는 외부사이트로 전환되면 다시 돌아오기 불편한 현재창에서 열리는게 별고 달갑지 않지요.
이거 혹시 자료가 ... 있을까요?
댓글 47
검색을 하다보니 이런 댓글이 보이는데요..
board.default.js 파일에...
jQuery(function(){ jQuery('.xe_content[class^=document_] a').attr('target', '_blank'); });
jQuery(function(){ jQuery('.xe_content[class^=comment_] a').attr('target', '_blank'); });
이게 잘 되는거면 여기서 자신의 사이트가 아니라면 이라는 조건을 걸어줄 수 있을까요?
윽.. 스케치북5 js 에는 저런게 없네요 ㅡㅡ;
jQuery(function() {
jQuery('.xe_content[class^=document_] a, .xe_content[class^=comment_] a').each(function() {
if(this.hostname !== window.location.hostname) {
$(this).attr('target', '_blank');
}
});
});
비교 조건이 상당히 엄격하기 때문에 현재창으로 열려야 하는 링크가 새창으로 열리는 문제는 있을 수 있지만... 반대로 새창으로 열려야 하는 링크가 현재창으로 열린다면 어딘가 스크립트 오류가 있어서 아예 저 부분이 실행되지 않는 게 아닌지 확인해 볼 필요가 있겠습니다.
근데 우리 사이트는 새창으로 안열리게 해주고 싶은데요..... 윽...
if(this.hostname !== window.location.hostname) {
이 부분을 수정해야 할 것입니다.
각각 값을 확인해봐야 할듯 하네요.
this.hostname 대신
jQuery(this).attr('href')를 쓰면 어떨까 합니다.
그리고 !==가 아닌 문자열 찾기인 indexOf로 비교하면 어떨까 하구요.
이 부분을 아래처럼 바꾸면 어떨려나요?
var url1 = jQuery(this).attr('href');
if(url1.indexOf(window.location.hostname) != -1) {
잘 되지는 않네요. 외부링크인데 현재창으로 열리네요.
도메인/abc 이런 것까지 제외하려면..
jQuery('.xe_content[class^=document_] a, .xe_content[class^=comment_] a').each(function() {
var a = jQuery(this).attr('href');
var b = /((https?:)?\/{2}(?!xetown)[\da-z\.-]+\.[a-z\.]{2,}[\w\/?&;=#%~\.-]*[\/]?)/g;
if(b.test(a)) {
$(this).attr('target', '_blank');
}
});
일케 하면 될런지.. 중간에 xetown 만 바궈서 한번 해보세요
if(b.test(a)) {
$(this).attr('target', '_blank');
} else {
$(this).attr('target', '_self ')
}
이렇게 한번..
----------- 그냥 처음 거 쓸게요... 도움 감사했습다. -------------
jQuery(function(){ jQuery('.xe_content[class^=document_] a').attr('target', '_blank'); });
jQuery(function(){ jQuery('.xe_content[class^=comment_] a').attr('target', '_blank'); });
이거로 해도 본문에 저희 사이트 링크 적을때 _self 로 하면 새창으로 안뜨는 듯 합니다.새창으로 뜨지만.. ㅋㅋ
많은 답변 감사했습니다.
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>
<script type='text/javascript'>
$(document).ready(function() {
$("a[href^='http://']").each(
function(){
if(this.href.indexOf(location.hostname) == 1) {
$(this).attr('target', '_self');
}
}
);
$("a[href^='https://']").each(
function(){
if(this.href.indexOf(location.hostname) == 1) {
$(this).attr('target', '_self');
}
}
);
});
</script>
될려나요.
이 스크립트를 board.js 에 그대로 넣으면 되나요?
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>
포함해서 스킨에 넣어야 하는건가요??
정 안되면 모든 링크에 Ctrl+클릭 생활화를... ㅎㅎ
var a = jQuery(this).attr('href');
var b = /(사이트이름)/g;
if(!b.test(a)) {
jQuery(this).attr('target', '_blank');
} else {
jQuery(this).attr('target', '_self');
}
});
이렇게 해보실래요? 상대경로가 들어간게 아니라면 되는 것 같긴한데..
전 외부링크를 현재창으로 열리게 하고 싶어서..
완전 감사합니다. 정말 눈물이 주룩 날 정도입니다.
잘되네요.... 너무 감사하게 잘 쓰겠습니다.
@proto
애드온 등록했습니다.
설정에 문자열을 여러개(쉽표등으로 구분...) 넣을 수 있게 하면 자신의 사이트말고 특정한 사이트도 셀프로 띄울수도 있겠습니다만... 이게 필요하지는 않을 듯 합니다. 과연 어떤 다른 외부사이트를 셀프로 띄울 필요가 있을지... 효용성이 제로에 가까운 아이디어네요 ㅋㅋ
어차피 강제로 모든 target을 바꾸는 것이라서요~
작성자가 임의로 지정해놓은 target도 바꾸는 것이라...^^
제 사이트에선 잘 되던데요....-0-
그러니까... 특정한 게시판에서만 사용하기 위해 체크한 곳이 작동은 하는데 어느곳에 체크되어 있는지 표시가 안됩니다.
php파일에 공백이 있어 그문제인줄 알고 제거하고 업로드해도 마찬가지이네요.
<addon version="0.2"> 이렇게 고치니 표시되네요. 아마 뭔가 바뀐게 0.2 형식 인가봅니다.
아무튼 해결되었다니 다행입니다...^^
제작자의 버전표시는 <version>1.7</version> 에 기입합니다.^^;
허억!!!!!
그렇군요!!!!!!!!!!!!!!!
역시 제대로 공부하고 한 것이 아니라서... 가르침 감사합니다!