Client Portal Language
 
HomeKnowledge BaseHTML Tips and tricksCan an Iframe resize dynamically to fit the content?
Information
Article ID44
Created On2/6/2008
Modified4/4/2008
Share With Others
Can an Iframe resize dynamically to fit the content?

IMPLEMENTING SELF-SIZING IFRAMES

 

CMS Implementation:

  1. You must create an alternate header for the page you wish to use this technology in.
    1. In this header, copy and paste the following code, making sure you put it between the <head> </head> tags:
    2. <script type="text/javascript">

          //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 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>

  1. When you create your CMS page, make sure you select the alternate header that contains the self-sizing code.
    1. Call your iFrame using the following code:  Modify where necessary to set the source URL.
    2. <div style="WIDTH: 588px; HEIGHT: 89.12%">
        <iframe id="myframe" style="OVERFLOW: visible; WIDTH: 100.16%; HEIGHT: 800px" marginwidth="0" marginheight="0" src="your path/your filename.ext" frameborder="0" scrolling="no"></iframe></div>
    3. Very Important : Make sure that the Iframe id value (myframe is the value used in this example) matches the value(s) in the iframeids variable used in the self-sizing code in the header (see line 3 in that codebase...var iframeids=["myframe"]).
    4. You can change the size by changing the height and width properties above.

 

 

Standard Website Implementation:

 

  1. Follow the steps above, omitting any instructions pertaining to the DirectControl CMS system.