PDA

View Full Version : iFrame Height Of Content



Echo54321
03-05-2008, 12:03 AM
Hi,

Everybody knows this script, that makes the content iframe stretch to the height of whats inside even after a link being pressed, But i've been trying to get one to work for around a month, nothing seems to work

Can anybody help!?

Independent
03-05-2008, 12:18 AM
Hi,

Everybody knows this script, that makes the content iframe stretch to the height of whats inside even after a link being pressed, But i've been trying to get one to work for around a month, nothing seems to work

Can anybody help!?
Give us a better description, paste us the code of the iframe.

I have edited one from dynamicdrive for you, with the iframe code.


<script type="text/javascript">

/***********************************************
© Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
***********************************************/

//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=["dynamic-frame"]

//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(navigat or.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 resizeCaller() {
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++){
if (document.getElementById)
resizeIframe(iframeids[i])
//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"
}
}
}

function resizeIframe(frameid){
var currentfr=document.getElementById(frameid)
if (currentfr && !window.opera){
currentfr.style.display="block"
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextr aHeight;
else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
currentfr.height = currentfr.Document.body.scrollHeight;
if (currentfr.addEventListener)
currentfr.addEventListener("load", readjustIframe, false)
else if (currentfr.attachEvent){
currentfr.detachEvent("onload", readjustIframe) // Bug fix line
currentfr.attachEvent("onload", readjustIframe)
}
}
}

function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
if (iframeroot)
resizeIframe(iframeroot.id);
}

function loadintoIframe(iframeid, url){
if (document.getElementById)
document.getElementById(iframeid).src=url
}

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

</script> - Don't ask me why I put it in a php thing.

Then the iframe..



<iframe id="dynamic-frame" name="dynamic-frame" src="some-page.php" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" style="overflow:visible; width:100%; display:none"></iframe>


I can't remember if it use's ID or NAME, because the Dynamicdrive iframe pastey thing did not include it, I added the name bit, with both in place it should work.. Good luck!

iUnknown
03-05-2008, 08:07 AM
Give the iframe these two variables: name="main" id="main"
Edit the width variable to whatever you want.
Use this code to make it expand, works in firefox, IE and much more:


<script type="text/javascript">
//<![CDATA[
window.onload = function() {
var f = document.getElementById("main");
function resize() {
var h = "";
var w = "";
if (f.contentDocument) {
h = f.contentDocument.documentElement.offsetHeight + 20 + "px";
// can't find anything for Opera and Firefox that works for the width. OffetWidth doesn't work right either.(f.contentDocument.documentElement,"").getPropertyValue("width");
} else if (f.contentWindow) {
h = f.contentWindow.document.body.scrollHeight + 5 + "px";
} else {
return;
}
f.setAttribute("height",h);
f.parentNode.setAttribute("height",h);
}
if (window.addEventListener) {
f.onload = resize;
} else if (f.attachEvent) {
f.attachEvent("onload", resize);
} else {
return;
}
resize();
}
//]]>
</script>Put it just before the </head> tag.

This code is useless if your layout isn't coded properly/in expandables (as is any other code to make the iframe expand, it either won't work or your layout will break when it expands).

Want to hide these adverts? Register an account for free!