그림 파일 두개 이상 첨부시 새창 고정되는거 풀기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

그림 파일 두개 이상 첨부시 새창 고정되는거 풀기 정보

그림 파일 두개 이상 첨부시 새창 고정되는거 풀기

본문

만약 그림파일이 두개 이상 첨부되고 글 읽기를 하면
처음 그림 이미지를 클릭하면 팝업이 뜹니다. 이후 팝업을 닫지 않고
두번째 이미지를 클릭하면 처음 이미지 팝업 크기에 그대로 그림만 바뀌죠!!
즉 두번째 이미지의 싸이즈가 적용이 되지 않습니다. 별로 신경 쓰지 않았는데
오늘 유독 신경 쓰이더군요.

게시판에서는     function image_window3(img_src, w, h) 라는 함수로 팝업을 띄우는데
여기 안에 보면 win 이라는 변수로 팝업을 window.open 합니다.
win 이라는 변수를 전역으로 잡고 다음 팝업시 win이라는 변수에 값이 있다면
win.close() 하시면 됩니다.

다음은  바뀐 소스 입니다. 참고 하세요.

혹시 중복일꺼 같다는 생각이???? 저만 이런 생각하지 않았겠죠????

---------------------------------   b4.common.js  ------------------------------------------------

var win; // 전역으로 잡기
if (typeof(B4_COMMON_JS) == 'undefined') { // 한번만 실행
    var B4_COMMON_JS = true;

    // 곱슬최씨님의 mw_image_window를 이름오류 안나게 이름만 변경
    function image_window2(img, w, h)
    {
     if (!w || !h)
     {
            var w = img.tmp_width;
            var h = img.tmp_height;
     }
   
     var winl = (screen.width-w)/2;
     var wint = (screen.height-h)/3;
   
     if (w >= screen.width) {
      winl = 0;
      h = (parseInt)(w * (h / w));
     }
   
     if (h >= screen.height) {
      wint = 0;
      w = (parseInt)(h * (w / h));
     }
   
     var js_url = "<script language='JavaScript1.2'> \n";
      js_url += "<!-- \n";
      js_url += "var ie=document.all; \n";
      js_url += "var nn6=document.getElementById&&!document.all; \n";
      js_url += "var isdrag=false; \n";
      js_url += "var x,y; \n";
      js_url += "var dobj; \n";
      js_url += "function movemouse(e) \n";
      js_url += "{ \n";
      js_url += "  if (isdrag) \n";
      js_url += "  { \n";
      js_url += "    dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x; \n";
      js_url += "    dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y; \n";
      js_url += "    return false; \n";
      js_url += "  } \n";
      js_url += "} \n";
      js_url += "function selectmouse(e) \n";
      js_url += "{ \n";
      js_url += "  var fobj      = nn6 ? e.target : event.srcElement; \n";
      js_url += "  var topelement = nn6 ? 'HTML' : 'BODY'; \n";
      js_url += "  while (fobj.tagName != topelement && fobj.className != 'dragme') \n";
      js_url += "  { \n";
      js_url += "    fobj = nn6 ? fobj.parentNode : fobj.parentElement; \n";
      js_url += "  } \n";
      js_url += "  if (fobj.className=='dragme') \n";
      js_url += "  { \n";
      js_url += "    isdrag = true; \n";
      js_url += "    dobj = fobj; \n";
      js_url += "    tx = parseInt(dobj.style.left+0); \n";
      js_url += "    ty = parseInt(dobj.style.top+0); \n";
      js_url += "    x = nn6 ? e.clientX : event.clientX; \n";
      js_url += "    y = nn6 ? e.clientY : event.clientY; \n";
      js_url += "    document.onmousemove=movemouse; \n";
      js_url += "    return false; \n";
      js_url += "  } \n";
      js_url += "} \n";
      js_url += "document.onmousedown=selectmouse; \n";
      js_url += "document.onmouseup=new Function('isdrag=false'); \n";
      js_url += "//--> \n";
      js_url += "</"+"script> \n";
  
      // zzzz님이 알려주셨어요. 감솨 ^^
     var j1_url = "<script language='JavaScript1.2'> \n";
      j1_url += "<!-- \n";
      j1_url += "function _ReSize() { ";
      j1_url += "   $get = document.getElementById('_img').style; ";
        j1_url += "   var ratio = document.getElementById('_img').width / document.getElementById('_img').height; ";
      j1_url += "   $get.width = document.body.clientWidth; ";
      j1_url += "   $get.height = document.body.clientWidth / ratio; ";
      j1_url += "   setTimeout('_ReSize()', 100); ";
      j1_url += "} ";
      j1_url += "//--> \n";
      j1_url += "</"+"script> \n";

     var j2_url = "<script language='JavaScript1.2'> \n";
      j2_url += "<!-- \n";
      j2_url += "_ReSize(); ";
      j2_url += "//--> \n";
      j2_url += "</"+"script> \n";
 
     var settings;
   
     if (g4_is_gecko) {
      settings  ='width='+(w+10)+',';
      settings +='height='+(h+10)+',';
     } else {
      settings  ='width='+w+',';
      settings +='height='+h+',';
     }
     settings +='top='+wint+',';
     settings +='left='+winl+',';
     settings +='scrollbars=no,';
     settings +='resizable=yes,';
     settings +='status=no';
   
     win=window.open("","image_window",settings); 
     win.document.open();
     win.document.write ("<html><head> \n<meta http-equiv='content-type' content='text/html; charset="+g4_charset+"'>\n");
     var size = "이미지 사이즈 : "+w+" x "+h;
     win.document.write ("<title>"+size+"</title> \n");
     if(w >= screen.width || h >= screen.height) {
       win.document.write (js_url);
      var click = "ondblclick='window.close();' style='cursor:move' title=' "+size+" \n\n 이미지 사이즈가 화면보다 큽니다. \n 왼쪽 버튼을 클릭한 후 마우스를 움직여서 보세요. \n\n 더블 클릭하면 닫혀요. '";
     }
     else
      var click = "onclick='window.close();' style='cursor:pointer' title=' "+size+" \n\n 클릭하면 닫혀요. '";

     win.document.write (j1_url);
     
     win.document.write ("<style>.dragme{position:relative;}</style> \n");
     win.document.write ("</head> \n\n");
     win.document.write ("<body oncontextmenu='return false' leftmargin=0 topmargin=0 bgcolor=#dddddd style='cursor:arrow;'> \n");
     win.document.write ("<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td align=center valign=middle><img id='_img' src='"+img.src+"' width='"+w+"' height='"+h+"' border=0 class='dragme' "+click+"></td></tr></table>");

      win.document.write (j2_url);

     win.document.write ("</body></html>");
     win.document.close();
   
     if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
   
    }
   
    // img_src 값으로 이미지창을 팝업 (팬+줌)
    function image_window3(img_src, w, h)
    {

     if (!w || !h)
     {
            var w = img.tmp_width;
            var h = img.tmp_height;
     }

     var winl = (screen.width-w)/2;
     var wint = (screen.height-h)/3;
   
     if (w >= screen.width) {
      winl = 0;
      h = (parseInt)(w * (h / w));
     }
   
     if (h >= screen.height) {
      wint = 0;
      w = (parseInt)(h * (w / h));
     } 

     if(win!= null) win.close(); // 만약 win에 값이 있다면 현재 팝업 닫기

     var js_url = "<script language='JavaScript1.2'> \n";
      js_url += "<!-- \n";
      js_url += "var ie=document.all; \n";
      js_url += "var nn6=document.getElementById&&!document.all; \n";
      js_url += "var isdrag=false; \n";
      js_url += "var x,y; \n";
      js_url += "var dobj; \n";
      js_url += "function movemouse(e) \n";
      js_url += "{ \n";
      js_url += "  if (isdrag) \n";
      js_url += "  { \n";
      js_url += "    dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x; \n";
      js_url += "    dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y; \n";
      js_url += "    return false; \n";
      js_url += "  } \n";
      js_url += "} \n";
      js_url += "function selectmouse(e) \n";
      js_url += "{ \n";
      js_url += "  var fobj      = nn6 ? e.target : event.srcElement; \n";
      js_url += "  var topelement = nn6 ? 'HTML' : 'BODY'; \n";
      js_url += "  while (fobj.tagName != topelement && fobj.className != 'dragme') \n";
      js_url += "  { \n";
      js_url += "    fobj = nn6 ? fobj.parentNode : fobj.parentElement; \n";
      js_url += "  } \n";
      js_url += "  if (fobj.className=='dragme') \n";
      js_url += "  { \n";
      js_url += "    isdrag = true; \n";
      js_url += "    dobj = fobj; \n";
      js_url += "    tx = parseInt(dobj.style.left+0); \n";
      js_url += "    ty = parseInt(dobj.style.top+0); \n";
      js_url += "    x = nn6 ? e.clientX : event.clientX; \n";
      js_url += "    y = nn6 ? e.clientY : event.clientY; \n";
      js_url += "    document.onmousemove=movemouse; \n";
      js_url += "    return false; \n";
      js_url += "  } \n";
      js_url += "} \n";
      js_url += "document.onmousedown=selectmouse; \n";
      js_url += "document.onmouseup=new Function('isdrag=false'); \n";
      js_url += "//--> \n";
      js_url += "</"+"script> \n";

      // zzzz님이 알려주셨어요. 감솨 ^^
     var j1_url = "<script language='JavaScript1.2'> \n";
      j1_url += "<!-- \n";
      j1_url += "function _ReSize() { ";
      j1_url += "   $get = document.getElementById('_img').style; ";
        j1_url += "   var ratio = document.getElementById('_img').width / document.getElementById('_img').height; ";
      j1_url += "   $get.width = document.body.clientWidth; ";
      j1_url += "   $get.height = document.body.clientWidth / ratio; ";
      j1_url += "   setTimeout('_ReSize()', 100); ";
      j1_url += "} ";
      j1_url += "//--> \n";
      j1_url += "</"+"script> \n";

     var j2_url = "<script language='JavaScript1.2'> \n";
      j2_url += "<!-- \n";
      j2_url += "_ReSize(); ";
      j2_url += "//--> \n";
      j2_url += "</"+"script> \n";
   
     var settings;
   
     if (g4_is_gecko) {
      settings  ='width='+(w+10)+',';
      settings +='height='+(h+10)+',';
     } else {
      settings  ='width='+w+',';
      settings +='height='+h+',';
     }
     settings +='top='+wint+',';
     settings +='left='+winl+',';
     settings +='scrollbars=no,';
     settings +='resizable=yes,';
     settings +='status=no';

     win=window.open("","image_window",settings);
     win.document.open();
     win.document.write ("<html><head> \n<meta http-equiv='content-type' content='text/html; charset="+g4_charset+"'>\n");
     var size = "이미지 사이즈 : "+w+" x "+h;
     win.document.write ("<title>"+size+"</title> \n");

     if(w >= screen.width || h >= screen.height) {
      win.document.write (js_url);
      var click = "ondblclick='window.close();' style='cursor:move' title=' "+size+" \n\n 이미지 사이즈가 화면보다 큽니다. \n 왼쪽 버튼을 클릭한 후 마우스를 움직여서 보세요. \n\n 더블 클릭하면 닫혀요. '";
     }
     else
      var click = "onclick='window.close();' style='cursor:pointer' title=' "+size+" \n\n 클릭하면 닫혀요. '";

     win.document.write (j1_url);

     win.document.write ("<style>.dragme{position:relative;}</style> \n");
     win.document.write ("</head> \n\n");
     win.document.write ("<body oncontextmenu='return false' leftmargin=0 topmargin=0 bgcolor=#dddddd style='cursor:arrow;'> \n");
     win.document.write ("<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td align=center valign=middle><img id='_img' src='"+img_src+"' width='"+w+"' height='"+h+"' border=0 class='dragme' "+click+"></td></tr></table>");

     win.document.write (j2_url);

     win.document.write ("</body></html>");
     win.document.close();
   
     if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
   
    }

// bit.ly api를 이용해서 단축 경로를 생성한다
function get_bitly_g4(tid, bo_table, wr_id) {

  // set up default options
  wr_url = g4_url + '/bbs/board.php?bo_table=' + bo_table + '&wr_id=' + wr_id;
  wr_url_encode = escape(wr_url);

  var defaults = {
    version:    '2.0.1',
    login:      bitly_id,
    apiKey:     bitly_key,
    history:    '0',
    longUrl:    wr_url_encode
  };

  // Build the URL to query
  var daurl = "http://api.bit.ly/shorten?"
    +"version="+defaults.version
    +"&longUrl="+defaults.longUrl
    +"&login="+defaults.login
    +"&apiKey="+defaults.apiKey
    +"&history="+defaults.history
    +"&format=json&callback=?";

    // Utilize the bit.ly API
    $.getJSON(daurl, function(data){

        var bitly_url = data.results[wr_url].shortUrl;

        // Make a good use of short URL - 화면의 url 정보를 업데이트
        $(tid).html('<a href='+bitly_url+' target=new>'+bitly_url+'</a>');

        url = g4_path +'/' + g4_bbs +'/g4_bitly_update.php';

        send  = 'bo_table=' + bo_table;
        send += '&wr_id=' + wr_id;
        send += '&bitly_url=' + bitly_url;

        $.ajax({
        type: 'POST',
        url: url,
        data: send,
        cache: false,
        async: false,
        success: function(result) {

            result      = result.split(',');
            msg_num     = result[0];

            if (msg_num !== '000')
                alert('잘못된 접근입니다.\n\n'+result);
            }

        });
 
    });

};

}

추천
0

댓글 0개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT