xe/common/js/common.js 중에 아래의 부분에서, 아래쪽에 굵은 글씨로 표시한 target="_blank" 를 PC 에서는 그대로, 모바일에서는 _self 로 하려면 어떻게 해야할까요?
/**
* @brief 문서/회원 등 팝업 메뉴 출력
*/
displayPopupMenu : function(ret_obj, response_tags, params) {
var target_srl = params.target_srl;
var menu_id = params.menu_id;
var menus = ret_obj.menus;
var html = "";
if(this.loaded_popup_menus[menu_id]) {
html = this.loaded_popup_menus[menu_id];
} else {
if(menus) {
var item = menus.item;
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
if(item.length) {
for(var i=0;i<item.length;i++) {
var url = item[i].url;
var str = item[i].str;
var icon = item[i].icon;
var target = item[i].target;
var styleText = "";
var click_str = "";
/* if(icon) styleText = " style=\"background-image:url('"+icon+"')\" "; */
switch(target) {
case "popup" :
click_str = 'onclick="popopen(this.href, \''+target+'\'); return false;"';
break;
case "javascript" :
click_str = 'onclick="'+url+'; return false; "';
url='#';
break;
default :
click_str = 'target="_blank"';
break;
}
html += '<li '+styleText+'><a href="'+url+'" '+click_str+'>'+str+'</a></li> ';
}
}
}
this.loaded_popup_menus[menu_id] = html;
}
댓글 3
if문으로 분기시켜 주면 될꺼에요.
default:
if(!$is_mobile) {
click_str = 'target="_blank"';
} else {
click_str = 'target="_self"';
}
break;
변수명은 정확하지 않네요.
자문자답입니다... 그렇다고 PC와 모바일 버전 구분에 성공한 것은 아니구요. ^^;; 우연히 다른 괜찮은 방법을 찾았기에 공유해 봅니다.
common.js, xe.js, xe.min.js 파일 내에 아래와 같이 Case "self" 를 추가해 주면 "쪽지 보내기" 만 창이 _blank 로 뜨고, 나머지는 다 _self 로 떠서 저는 훨씬 이전보다(전부 _blank로 뜨는 것보다) 좋은 것 같습니다. 단 코어를 수정하는 것이기에 XE 업데이트 마다 다시 적용해 줘야 하는 불편함이 있습니다.
case "popup" :
click_str = 'onclick="popopen(this.href, \''+target+'\'); return false;"';
break;
case "javascript" :
click_str = 'onclick="'+url+'; return false; "';
url='#';
break;
case "self" :
click_str='onclick=\"location=this.href;\"';
break;
default :
click_str = 'target="_blank"';
break;
}