JavaScript - Jquery

Asked By pop11 on 04-Feb-11 11:03 PM
How can I get a parent window's height from within iFrame using jQuery?
Anoop S replied to pop11 on 05-Feb-11 12:19 AM
jQuery is not required for that, you can find like this way

parent.document.body.clientHeight
Reena Jain replied to pop11 on 05-Feb-11 02:11 AM
hi,

using parent.document.body.clientHeight you can get the height of iFrame. here is the javascript code to alert the size as well to set/Reassign it.

Parent page code:
<iframe id='ifrm' />
Script on iframe page:

unction alertSize() {
  var myHeight = 0;
  if (typeof (parent.window.innerWidth) == 'number') {
  //Non-IE
  myHeight = parent.window.innerHeight;
  } else if (parent.document.documentElement
  && (parent.document.documentElement.clientWidth || parent.document.documentElement.clientHeight)) {
  //IE 6+ in 'standards compliant mode'
  myHeight = parent.document.documentElement.clientHeight;
  } else if (parent.document.body && (parent.document.body.clientWidth || parent.document.body.clientHeight)) {
  //IE 4 compatible
  myHeight = parent.document.body.clientHeight;
  }
  //window.alert( 'Height = ' + myHeight );
  return myHeight;
}
 
function AssignFrameHeight() {
  var theFrame = $("#ifrm", parent.document.body);
  var frameHeight1 = getIframeHeight('ifrm');
  var frameHeight2 = $(document.body).height();
  if ($(document.body)[0]) {
  if ($(document.body)[0].bottomMargin)
    frameHeight2 += Number($(document.body)[0].bottomMargin);
  if ($(document.body)[0].topMargin)
    frameHeight2 += Number($(document.body)[0].topMargin);
  }
  if (frameHeight1 > frameHeight2) {
  theFrame.height(frameHeight1 - 20);
  } else {
  if ($.browser.msie)
    theFrame.height(frameHeight2);
  else
    theFrame.height(frameHeight2 + 50);
  }
}
 
function getIframeHeight(iframeName) {
  //var iframeWin = window.frames[iframeName];
  var iframeEl = parent.document.getElementById
  ? parent.document.getElementById(iframeName)
  : parent.document.all
    ? parent.document.all[iframeName]
    : null;
  if (iframeEl) {
  iframeEl.style.height = "auto"; // helps resize (for some) if new doc shorter than previous
  //var docHt = getDocHeight(iframeWin.document);
  // need to add to height to be sure it will all show
  var h = alertSize();
  //var new_h = (h - 148);
  //iframeEl.style.height = h + "px";
  return h;
  //alertSize();
  }
}
Reassign height after postback:
function pageLoad() { // MS AJAX - UpdatePanel
  AssignFrameHeight();
}
 
$(document).ready(function() { // jQuery
  AssignFrameHeight();
});
Hope this will help you