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

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

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 필드에 넣으면 됩니다.

첨부파일

wr_content.txt (12.2 KB) 17회 2009-12-20 21:49
|

댓글 8개

<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");
}
}
}
}
이미지 팝업도 뜨구 link도 그대로에요. ㅠ..ㅠ...
<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>
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

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

+
제목 글쓴이 날짜 조회
16년 전 조회 1,331
16년 전 조회 968
16년 전 조회 1,819
16년 전 조회 1,552
16년 전 조회 1,544
16년 전 조회 1,567
16년 전 조회 1,119
16년 전 조회 1,458
16년 전 조회 2,068
16년 전 조회 3,428
16년 전 조회 1,014
16년 전 조회 1,977
16년 전 조회 800
16년 전 조회 1,121
16년 전 조회 1,571
16년 전 조회 4,459
16년 전 조회 975
16년 전 조회 1,841
16년 전 조회 1,499
16년 전 조회 949