(재질문) 이미지 resize-popup-a href java script ... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

(재질문) 이미지 resize-popup-a href java script ... 정보

(재질문) 이미지 resize-popup-a href java script ...

첨부파일

wr_content.txt (12.2K) 17회 다운로드 2009-12-20 21:49:54

본문

앞의 질문을 하면서, 제가 의도한 바를 정확하게 표현하지 못한거 같아서 다시 정리했습니다.

js/board.js의 function resizeBoardImage(imageWidth, borderColor) 함수에서는
target_resize_image[] 태그가 있는 요소를 찾아서, 이미지의 size를 조정해 줍니다.

그런데, 게시글의 이미지들중에는 a href 요소에 의해서 둘러쌓여져 있는게 있습니다.

<img src= ... onclick=...> 이거는 문제가 아니지만,

<a href ...><img src=... onclick=...></a>와 같은 경우에는
이미지를 클릭하면 link도 나오고 이미지 팝업도 나오기 때문에
이미지의 popup이 나오지 않게 onclick의 속성을 없애줘야 합니다.

이것을 view.php에서 preg_replace로 하기는 좀 그렇고
board.js의 java script를  수정하는 것이 바람직한 것 같아서 앞의 질문을 했었는데,
질문을 하면서 머리가 정리되지 않아서 헷갈렸던거 같습니다.

방법은 2가지 인거 같습니다.

(1)
board.js를 수정해서 이미지를 클릭하면 a href 요소에 의해서 주소연결이 있는 경우
(부모 nodes를 검사해야 하나요?) img의 onclick을 없애준다

(2)
java script 함수를 추가해서, a href 요소를 검사해서 밑에 img 태그가 있으면
onclick의 속성을 없애버린다.

앞의 질문
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=146788

(테스트용 예제)
첨부파일 내용을 게시글의 wr_content 필드에 넣으면 됩니다.

댓글 전체

<span id='writeContents'>
<a href=""><img src="" /></a>
</span>

<script type="text/javascript">
function OnclickCheck(Target)
{
  var A_tags = Target.getElementsByTagName("A");

  for (var i=0; i<A_tags.length; i++)
  {
    if (!A_tags[i].getAttribute("href"))
      continue;

    if (A_tags[i].getAttribute("HREF").indexOf("javascript") >= 0)
      continue;

    if(typeof(A_tags[i].getElementsByTagName("IMG")[0]) != "undefined")
      IMG_tags = A_tags[i].getElementsByTagName("IMG")[0];

    if (IMG_tags.getAttribute("ONCLICK") != null)
    {
      IMG_tags.onclick = null;
    }
  }

  return;
}

OnclickCheck(document.getElementById("writeContents"));
</script>
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Sun, 20 Dec 2009 13:59:19 UTC


Message: 'IMG_tags' is undefined
Line: 704
Char: 5
Code: 0

첨부 데이터로 함 테스트 해봐주세요. 위와 같은 오류가 나와요.
오류 때문에 popup또 뜨구, link도 _blank가 아니어요.
<span id='writeContents'>
<a href=""><img src="" /></a>
</span>

<script type="text/javascript">
function OnclickCheck(Target)
{
  var A_tags = Target.getElementsByTagName("A");
  var IMG_tags;

  for (var i=0; i<A_tags.length; i++)
  {
    if (!A_tags[i].getAttribute("href"))
      continue;

    if (A_tags[i].getAttribute("HREF").indexOf("javascript") >= 0)
      continue;

    if(typeof(A_tags[i].getElementsByTagName("IMG")[0]) != "undefined")
      IMG_tags = A_tags[i].getElementsByTagName("IMG")[0];

    if (IMG_tags.getAttribute("ONCLICK") != null)
    {
      IMG_tags.onclick = null;
    }
  }

  return;
}

OnclickCheck(document.getElementById("writeContents"));
</script>

이건요>?
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Sun, 20 Dec 2009 14:18:36 UTC


Message: 'undefined' is null or not an object
Line: 705
Char: 5
Code: 0
URI: http://couponmail.co.kr/bbs/board.php?bo_table=couponmail&wr_id=29
이거를 써보세요.

function a_img_onclick() {
  var getA = document.getElementsByTagName("a");
  for (var i=0; i<getA.length; i++) {
    var getImg = getA[i].getElementsByTagName("img");
    for (var k=0; k<getImg.length; k++) {
      if(getImg[k].getAttribute("onclick")) {
        getImg[k].setAttribute("onclick", "");
        getImg[k].parentNode.setAttribute("target", "_blank");
      }
    }
  }
}
<span id='writeContents'>
<a href=""><img src="" /></a>
</span>

<script type="text/javascript">
function OnclickCheck(Target)
{
  var A_tags = Target.getElementsByTagName("A");

  for (var i=0; i<A_tags.length; i++)
  {
    if (!A_tags[i].getAttribute("href"))
      continue;

    if (A_tags[i].getAttribute("HREF").indexOf("javascript") >= 0)
      continue;

    if(typeof(A_tags[i].getElementsByTagName("IMG")[0]) != "undefined")
    {
      if (A_tags[i].getElementsByTagName("IMG")[0].getAttribute("ONCLICK") != null)
      {
        A_tags[i].getElementsByTagName("IMG")[0].onclick = null;
      }
    }
  }

  return;
}

OnclickCheck(document.getElementById("writeContents"));
</script>

이건요? 어디좀 다녀 오느라 아까껀 금방 만드느 냐구...

사용법은 아시리라 믿구... 지금거 않되면 만세욤...
잘 됩니다. 감사해요. java는 역시 어려워요. 봐도 뭔지 모르겠다는... ㅠ..ㅠ...

<script type="text/javascript">
function OnclickCheck(Contents, Target)
{
  var A_tags = Contents.getElementsByTagName("A");

  for (var i=0; i<A_tags.length; i++)
  {
    if (!A_tags[i].getAttribute("href"))
      continue;

    if (A_tags[i].getAttribute("HREF").indexOf("javascript") >= 0)
      continue;

    if (Target)
        A_tags[i].target = Target;
    else
        A_tags[i].target = '_blank';

    if(typeof(A_tags[i].getElementsByTagName("IMG")[0]) != "undefined")
    {
      if (A_tags[i].getElementsByTagName("IMG")[0].getAttribute("ONCLICK") != null)
      {
        A_tags[i].getElementsByTagName("IMG")[0].onclick = null;
      }
    }
  }

  return;
}

OnclickCheck(document.getElementById("writeContents"), "_blank");
</script>
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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