centering a div on user screen fails with iframe

Discussion in 'JavaScript' started by gotaquestion, Aug 15, 2009.

  1. #1
    the javascript below centers a div on the users screen.
    it works perfect until you put the code into an iframe.
    so the question is: how can I get this to work inside of an iframe?
    so far I have narrowed it down to the fact that
    scrolledY is always zero in the iframe.

    function showdeadcenterdiv(Xwidth,Yheight,divid) {
    // First, determine how much the visitor has scrolled
    
    var scrolledX, scrolledY;
    if( self.pageYOffset ) {
    scrolledX = self.pageXOffset;
    scrolledY = self.pageYOffset;
    } else if( document.documentElement && document.documentElement.scrollTop ) {
    scrolledX = document.documentElement.scrollLeft;
    scrolledY = document.documentElement.scrollTop;
    } else if( document.body ) {
    scrolledX = document.body.scrollLeft;
    scrolledY = document.body.scrollTop;
    }
    
    // Next, determine the coordinates of the center of browser's window
    
    var centerX, centerY;
    if( self.innerHeight ) {
    centerX = self.innerWidth;
    centerY = self.innerHeight;
    } else if( document.documentElement && document.documentElement.clientHeight ) {
    centerX = document.documentElement.clientWidth;
    centerY = document.documentElement.clientHeight;
    } else if( document.body ) {
    centerX = document.body.clientWidth;
    centerY = document.body.clientHeight;
    }
    
    // Xwidth is the width of the div, Yheight is the height of the
    // div passed as arguments to the function:
    var leftOffset = scrolledX + (centerX - Xwidth) / 2;
    var topOffset = scrolledY + (centerY - Yheight) / 2;
    // The initial width and height of the div can be set in the
    // style sheet with display:none; divid is passed as an argument to // the function
    var o=document.getElementById(divid);
    var r=o.style;
    r.position='absolute';
    r.top = topOffset + 'px';
    r.left = leftOffset + 'px';
    r.display = "block";
    } 
    Code (markup):

     
    gotaquestion, Aug 15, 2009 IP
  2. gotaquestion

    gotaquestion Peon

    Messages:
    2
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I needed to use parent.document
     
    gotaquestion, Aug 15, 2009 IP