묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
아이프레임 사이즈 자동조절 중... 도와주세효...
2004.11.11 15:52
아.. 글 다 날라가 버렸네요... 힘내서 다시 작성...;;;
제가 지금 문서로딩시 아이프레임 사이즈를 자동으로 조절하도록하는 홈페이지를 만들고 있습니다.
http://ccrazyi.com
위의 홈피에서 my 메뉴로 들어가시면 문제가 생기는데요...(... 허접해서 민망하지만 별수없지요...)
현재 태터툴로 블로그를 삽입중인데요,
블로그가 불러 들여지는 부분(컨텐츠), 그 부분이 아이프레임입니다.
스크롤바의 값을 받아서 우측으로 표현이 되게했지요. 이곳에서 찾은 소스를 붙인것입니다.
function doResize()
{
container.height = mainFrame.document.body.scrollHeight;
container.width = mainFrame.document.body.scrollWidth;
}
<td width="430" align="left" valign="top" style="table-layout:fixed " id="container"><iframe src="../gallery/index.php" name="mainFrame" id="mainFrame" height=100% width=100% marginwidth=0 marginheight=0 frameborder=no scrolling=no style="z-index:1; " onLoad="doResize();"></iframe></td>
이렇게 아이프레임이 로딩될시에 스크롤바 길이가 변경이 되는데요....
문제는...
블로그에서(메뉴 my) 중 글 밑에 Reply 버튼을 누르면 밑으로 답글들이 표시가 되는데요,
여기서 스크롤바 값이 변경이 되어야 하는데 고정이 되어서 글의 아랫부분들이 잘리게 됩니다.
아이프레임이 새로 로딩될시에만 사이즈변경하는 함수를 호출했기 때문이겠지요...
그래서 버튼을 클릭할때 저 함수를 호출해야 하나 해서 여기저기 막 써보고 했는데, 안됩니다...;;;;
<a href="#rp" onclick="[##_article_rep_rp_link_##]">Reply[##_article_rep_rp_cnt_##]</a>
이게 리플라이 버튼에 달려있는 코드구요...
$d2_rp = str_replace("[##_article_rep_tb_link_##]", "onclick_addexe('$no', 'post_$no', weblog.post_$no"."_div_tb, weblog.post_$no"."_div_rp, 'tb'); return false;", $d2_rp);
function onclick_addexe(num, d_target, obj1, obj2, mode) {
if (obj1.value == 0) {
obj1.value = '1';
obj2.value = '0';
exe_frame.location.href='add_exe.php?md='+mode+'&num='+num+'&d_target='+d_target;
return true;
} else {
obj1.value = '0';
eval(document.getElementById(d_target)).innerHTML = '';
return true;
}
}
이 부분들이 버튼 클릭시 사용되는 코드들입니다.
혹시 사이즈 변경함수에 문제가 있나 해서
function resize() {
parent.doResize();
}
onResize="resize();" (아이프레임으로 불러들여지는 문서의 body 부분에 삽입)
이런식으로 해보았는데....
브라우저 사이즈를 줄였다 늘였다 하면 스크롤바 사이즈가 정상적으로 변환이 가능하더군요...
사이즈 조절하는 함수를 호출하는 시점을 제대로 찾던가 해야할것만 같은데요...
제가 지식이 부족해서....
도무지 안되네요.... 방법제시라도 좋으니 도와주세요.....
제가 잘 모르니까., 되도록이면 쉬운 말로요.... 부탁드립니다..
쉬운말로...
제가 지금 문서로딩시 아이프레임 사이즈를 자동으로 조절하도록하는 홈페이지를 만들고 있습니다.
http://ccrazyi.com
위의 홈피에서 my 메뉴로 들어가시면 문제가 생기는데요...(... 허접해서 민망하지만 별수없지요...)
현재 태터툴로 블로그를 삽입중인데요,
블로그가 불러 들여지는 부분(컨텐츠), 그 부분이 아이프레임입니다.
스크롤바의 값을 받아서 우측으로 표현이 되게했지요. 이곳에서 찾은 소스를 붙인것입니다.
function doResize()
{
container.height = mainFrame.document.body.scrollHeight;
container.width = mainFrame.document.body.scrollWidth;
}
<td width="430" align="left" valign="top" style="table-layout:fixed " id="container"><iframe src="../gallery/index.php" name="mainFrame" id="mainFrame" height=100% width=100% marginwidth=0 marginheight=0 frameborder=no scrolling=no style="z-index:1; " onLoad="doResize();"></iframe></td>
이렇게 아이프레임이 로딩될시에 스크롤바 길이가 변경이 되는데요....
문제는...
블로그에서(메뉴 my) 중 글 밑에 Reply 버튼을 누르면 밑으로 답글들이 표시가 되는데요,
여기서 스크롤바 값이 변경이 되어야 하는데 고정이 되어서 글의 아랫부분들이 잘리게 됩니다.
아이프레임이 새로 로딩될시에만 사이즈변경하는 함수를 호출했기 때문이겠지요...
그래서 버튼을 클릭할때 저 함수를 호출해야 하나 해서 여기저기 막 써보고 했는데, 안됩니다...;;;;
<a href="#rp" onclick="[##_article_rep_rp_link_##]">Reply[##_article_rep_rp_cnt_##]</a>
이게 리플라이 버튼에 달려있는 코드구요...
$d2_rp = str_replace("[##_article_rep_tb_link_##]", "onclick_addexe('$no', 'post_$no', weblog.post_$no"."_div_tb, weblog.post_$no"."_div_rp, 'tb'); return false;", $d2_rp);
function onclick_addexe(num, d_target, obj1, obj2, mode) {
if (obj1.value == 0) {
obj1.value = '1';
obj2.value = '0';
exe_frame.location.href='add_exe.php?md='+mode+'&num='+num+'&d_target='+d_target;
return true;
} else {
obj1.value = '0';
eval(document.getElementById(d_target)).innerHTML = '';
return true;
}
}
이 부분들이 버튼 클릭시 사용되는 코드들입니다.
혹시 사이즈 변경함수에 문제가 있나 해서
function resize() {
parent.doResize();
}
onResize="resize();" (아이프레임으로 불러들여지는 문서의 body 부분에 삽입)
이런식으로 해보았는데....
브라우저 사이즈를 줄였다 늘였다 하면 스크롤바 사이즈가 정상적으로 변환이 가능하더군요...
사이즈 조절하는 함수를 호출하는 시점을 제대로 찾던가 해야할것만 같은데요...
제가 지식이 부족해서....
도무지 안되네요.... 방법제시라도 좋으니 도와주세요.....
제가 잘 모르니까., 되도록이면 쉬운 말로요.... 부탁드립니다..
쉬운말로...
댓글 3
-
beMax
2004.11.11 19:16
-
crazy.i
2004.11.11 20:24
제가 그방법이 맞는거 같아서 해봤는데요... 아무 변화가 없습니다.
doResize()는 부모창에 있는 함수라서 parent.doResize(), 그리고 아이프레임 내부에 있는 함수인 resize()를 해보기도 했는데...
아무 변화가 없습니다...
그리고 한가지 사실을 알아냈는데요... 아래글 리플라이버튼을 누른다음에 위에글 리플라이 버튼을 누르면, 완전히는 아니지만 스크롤바가 좀 늘어나긴 하네요...;;;
브라우저 창을 줄이거나 늘리거나 하면 잘 되는데 말이죠... ㅠ_ㅠ 관심가져주셔서 정말 감사드립니다... -
crazy.i
2004.11.16 09:45
해결했습니다... 답글 달아주시는 분이 없는관계로...
다른 분들 검색하다 보시면 도움 되시라고 올립니다....
문제는 일정시간이 지나야 스크롤이 변경된다는 것이구요...
그래서 settimeout 함수를 써서 시간을 두었습니다. 다른곳에 물어봤다가 알게된거구요...
리사이즈는 0.5초정도 시간을 주어야 한다더군요... 저는 이런식으로 했씁니다. 일정시간후에
리사이즈를 하는 함수를 호출하는건가봐요... 저도 지식이 모자란지라... 암튼 도움되셨음합니다.
제가 함수를 쓰는 곳은 iframe 을 불러들이는 부모 프레임에 적어준것입니다.
아이프레임으로 불러들여질 페이지에 너실분들은 치환하는 값을 적절히 변경시켜 주면 되시겠네요...
좋은 하루되세요~
function doResize()
{
//container.height = mainFrame.document.body.scrollHeight;
setTimeout('ResizeIframe()',500);
}
function ResizeIframe() {
container.height = mainFrame.document.body.scrollHeight;
}
이렇게 해주시고 리사이즈 함수 호출이 필요한 곳에서다가 doResize() 함수를 호출해 주면 되겠찌요? @-@
여기다 doResize() 를 넣으면 될것같습니다.