PDA

View Full Version : How do I get my iframe script to work in Firefox?



pnoozi
12-15-2008, 11:30 PM
I used the following script (courtesy of you guys here at Dynamic) to auto resize the hight of my iframe to fit its content. It works in IE but not in FF.

www.lmbclan.com (if using FF you should immediately see the problem)

Here is the script located in the header.


<SCRIPT type="text/javascript">

/***********************************************
* IFrame SSI script II- 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=["iframe"]

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

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 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+FFextraHeight;
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>

Here is one of the links (there are 3 but only 1 is necessary to show here).


<a href="javascript:loadintoIframe('iframe', '/forums/blog.php?mode=recent_blogs')"><IMG SRC="/images/page-buttons/home.gif" border="1"></a>

Here is the iframe located in the body.


<iframe id="iframe" name="iframe" width="830" frameborder="1" scrolling="no" allowtransparency="true" src="/forums/blog.php?mode=recent_blogs" style="overflow:visible"></iframe>

Is there a way to get this to work in Firefox? That's what most of my traffic will be using (including myself).

Thanks in advance.

Kenny
12-16-2008, 01:07 PM
Declare the iframe width in a style rather than the attribute

pnoozi
12-17-2008, 02:38 AM
Declare the iframe width in a style rather than the attribute

Could you be a little more specific? How do I do this? Why the width?