물어보기XpressEngine
Extra Form

 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;

}

  • profile
    Double'U' 2018.06.12 09:34:38
    $is_mobile 인가? 모바일 여부를 담고 있는 변수가 있어요.
    if문으로 분기시켜 주면 될꺼에요.

    default:
    if(!$is_mobile) {
    click_str = 'target="_blank"';
    } else {
    click_str = 'target="_self"';
    }
    break;

    변수명은 정확하지 않네요.
  • profile
    Paul 2018.06.12 14:27:01
    답변해 주셔서 감사합니다! Double'U'님께 또 도움을 받네요. ^^ 엄,, 지금 잠깐 적용해 봤는데 잘 안되는 것 같은데... 조금 후에 시간이 더 날 때 알려주신 아이디어로 다시한번 시도해 보겠습니다. 이번에도 도와 주셔서 감사합니다! ^^
  • profile
    Paul 2018.06.14 02:36:05

    자문자답입니다... 그렇다고 PC와 모바일 버전 구분에 성공한 것은 아니구요. ^^;; 우연히 다른 괜찮은 방법을 찾았기에 공유해 봅니다.

     

    common.js, xe.js, xe.min.js 파일 내에 아래와 같이 Case "self" 를 추가해 주면 "쪽지 보내기" 만 창이 _blank 로 뜨고, 나머지는 다 _self 로 떠서 저는 훨씬 이전보다(전부 _blank로 뜨는 것보다) 좋은 것 같습니다. 단 코어를 수정하는 것이기에 XE 업데이트 마다 다시 적용해 줘야 하는 불편함이 있습니다.

     

    switch(target) {
      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;
    }

     


서버에 요청 중입니다. 잠시만 기다려 주십시오...