Как да направя автоматичен размер на iframe

djpatzo

Registered
Интерисува ме как мога да направя автоматичен размер на height в iframe според фреймнатата страница. Примерно страницата ми си съставя фрейм 760 px , искам и самия iframe да взема тази височина на страницата. Т.е. не искам да ми излизат скролове и такива работи.

Имам следният код
Код:
<html>
<head>

<title></title>

<script type="text/javascript">

/***********************************************
* IFrame SSI script- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
* Visit DynamicDrive.com for hundreds of original DHTML scripts
* This notice must stay intact for legal use
***********************************************/

//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
//Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:
var iframeids=["myframe"]

//Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
var iframehide="yes"

var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

function dyniframesize() {
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++){
if (document.getElementById){ //begin resizing iframe procedure
dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);
if (dyniframe[i] && !window.opera){
dyniframe[i].style.display="block"
if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //ns6 syntax
dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight+FFextraHeight; 
else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //ie5+ syntax
dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
}
}
//reveal iframe for lower end browsers? (see var above):
if ((document.all || document.getElementById) && iframehide=="no"){
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
tempobj.style.display="block"
}
}
}

if (window.addEventListener)
window.addEventListener("load", dyniframesize, false)
else if (window.attachEvent)
window.attachEvent("onload", dyniframesize)
else
window.onload=dyniframesize

</script>

</head>

<body bgcolor="#111"><center>
<iframe name="frame" src="../flash.html" width="720" height="610" scrolling="NO" frameborder="0"></iframe>
<iframe name="frame2" id="myframe" src="../news.php" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" style="overflow:visible; width:100%; display:none"></iframe>
</center>
</body>

</html>
 
Код:
var iframe = document.getElementById("ид-то на твоя фрйм");
var iHeight = iframe.contentDocument.document.getElementById("diver").offsetHeight;
iframe.style.height = iHeight+'px';

Като преди това цялото съдържание на документа, който зареждаш трябва да поставиш в div с id="diver".
 
Нещо не се получава. Ако може малко повече информация. След промяната кода ми представлява това.....
Код:
<html>
<head>

<title>RollstarBG.com</title>

<script type="text/javascript"> 
var iframe = document.getElementById("frame2");
var iHeight = iframe.contentDocument.document.getElementById("diver").offsetHeight;
iframe.style.height = iHeight+'px';
</script>

</head>

<body bgcolor="#111">



<center>
<div id="diver">
<iframe name="frame" src="../flash.html" width="720" height="610" scrolling="NO" frameborder="0"></iframe>
<iframe name="frame2" src="../news.php" width="720" scrolling="NO" frameborder="0"></iframe>
</div>
</center>
</body>

</html>
 
Значи долкото разбрах искаш фрейма да заеме цялата видима област на броузъра така ли?Независимо от резолюцията?
 
Код:
<html>
<head>

<title>RollstarBG.com</title>

</head>

<body bgcolor="#111">



<center>

<iframe name="frame" src="../flash.html" width="720" height="610" scrolling="NO" frameborder="0"></iframe>
<iframe id="frame2" src="../news.php" width="720" scrolling="NO" frameborder="0"></iframe>

</center>
<script type="text/javascript"> 
var iframe = document.getElementById("frame2");
var iHeight = iframe.contentDocument.document.getElementById("diver").offsetHeight;
iframe.style.height = iHeight+'px';
</script>
</body>

</html>

1.Трябваше да зададеш id на фрийма, а не name.
2.Трябва да сложиш съдържанието на страницата която зареждаш в div с id="diver", тоест си промени news.php.
3.Наистина забравих да ти кажа, че javascripta трябва да е след iframe-а.

Ето работещ пример
 
Интерисува ме като се зареди във фрейм не да ми реже страницата ами да ми изкарва цялото и съдържание.
 
djpatzo каза:
Интерисува ме като се зареди във фрейм не да ми реже страницата ами да ми изкарва цялото и съдържание.

Точно това прави примера, който ти дадох. Ако реже малко страницата отдоло прибави едно 30-40 пиксела и ще пасне отлично.

Код:
ame.style.height = (iHeight+40)+'px';

Погледна ли файловете от примера? Можеш да тестваш като променяш съдържанието на страницата, която зареждаш във фрейма.
 
Не малко ами ми реже цялата страница. Това за height=100% прави станицата 100% от самия браузър значи имам един фрейм горе той ми заема 1/3 от целия прозорец на максимизирания браузър. Като сложа на 100% и ми излиза с долу някакъв супер минимален прозорец.
 
Взимам news.php от php-fusion и един html със зареден флаш с него. По нагоре съм дал имената на файловете.

Адреса е http://rollstarbg.com
 
djpatzo каза:
Взимам news.php от php-fusion и един html със зареден флаш с него. По нагоре съм дал имената на файловете.

Адреса е http://rollstarbg.com

html кода:
Код:
<html>
<head>

<title>RollstarBG.com</title>

<script type="text/javascript">
function resize(){
var iframe = document.getElementById("frame2");
var iHeight = iframe.contentDocument.getElementById("diver").offsetHeight;
iframe.style.height = iHeight+'px';
}
</script>

</head>

<body bgcolor="#111">



<center>

<iframe name="frame" src="http://rollstarbg.com/flash.html" width="720" height="610" scrolling="NO" frameborder="0"></iframe>
<iframe id="frame2" src="news.htm" width="720" scrolling="NO" frameborder="0" onload="resize();"></iframe>

</center>

</body>

</html>

И пак не си ме послушал :)

Отвори news.php и сложи точно след <body> дива с id="diver" и го затвори точно преди </body>:
Код:
<boby><div id="diver">
.......
..
.
.
.
</div></body>

И вече няма как да не стане.
 
Не се разширява. Погледни няма скролл на главния сайт и реже от страницата news.php и не показва цялата информация. И не бих искал да се отваря в нов прозорец самия фрейм.
 
Защото не си сложил div-а с id="diver" в news.php!

Това ти казвам всички постове и така и не си го направил...
 
Като го припаснах за php-fusion-a не излиза въобще. Всичко е както следва. Използва се файл header.php защото единствено в него има <head> тагове.
 
Оправих се най-накрая. Мерси за помощта но кода който ползвам е от чужд сайт.
Код:
<script language="JavaScript">
function autoResize(id){
    var newheight;
    var newwidth;

    if(document.getElementById){
        newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
        newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
    }

    document.getElementById(id).height= (newheight) + "px";
    document.getElementById(id).width= (newwidth) + "px";
}
</script>

<iframe name="frame2" id="frame2" src="../news.php" width="720" scrolling="NO" frameborder="no" onLoad="autoResize('frame2');"></iframe>
 

Back
Горе