What could cause scrollWidth to return 0?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Robert Oschler

    What could cause scrollWidth to return 0?

    I have a "child" document that I use for an IFRAME element that I put into
    several "parent" documents. These "parent" documents therefore contain the
    IFRAME whose SRC property is set to the "child" document.

    The parent(s) have three Javascript functions, here they are:

    // =============== ==============

    var gMargin = 5;

    function getScrollWidth( doc, callerId)
    {

    if (true)
    {
    // If no document reference was passed, assume it is the
    // current document.
    if (!doc)
    doc = document;

    var ret;

    if (doc.all)
    {
    // Internet Explorer.
    if (doc.compatMode &&
    doc.compatMode != 'BackCompat')
    ret = doc.documentEle ment.scrollWidt h + gMargin + 'px';
    else
    ret = doc.body.scroll Width + gMargin + 'px';
    } // if (doc.all)
    else if (doc.width)
    // Other browsers.
    ret = doc.width + gMargin + 'px';

    // alert('(getScro llWidth) Returning scroll width(' + ret + ') to
    caller Id: ' + callerId);

    return ret;
    } // if (true)
    }

    // =============== ==============

    function getScrollHeight (doc, callerId)
    {
    if (true)
    {
    // If no document reference was passed, assume it is the
    // current document.
    if (!doc)
    doc = document;

    var ret;

    if (doc.all)
    {
    // Internet Explorer.
    if (doc.compatMode &&
    doc.compatMode != 'BackCompat')
    ret = doc.documentEle ment.scrollHeig ht + gMargin + 'px';
    else
    ret = doc.body.scroll Height + gMargin + 'px';
    } // if (doc.all)
    else if (doc.height)
    // Other browsers.
    ret = doc.height + gMargin+ 'px';

    // alert('(getScro llHeight) Returning scroll height(' + ret + ') to
    caller Id: ' + callerId);

    return ret;
    } // if (true)
    }

    // ---------------------------------------------------------------

    function getScrollHeight (doc, callerId)
    {
    if (true)
    {
    // If no document reference was passed, assume it is the
    // current document.
    if (!doc)
    doc = document;

    var ret;

    if (doc.all)
    {
    // Internet Explorer.
    if (doc.compatMode &&
    doc.compatMode != 'BackCompat')
    ret = doc.documentEle ment.scrollHeig ht + gMargin + 'px';
    else
    ret = doc.body.scroll Height + gMargin + 'px';
    } // if (doc.all)
    else if (doc.height)
    // Other browsers.
    ret = doc.height + gMargin+ 'px';

    // alert('(getScro llHeight) Returning scroll height(' + ret + ') to
    caller Id: ' + callerId);

    return ret;
    } // if (true)
    }

    // ---------------------------------------------------------------



    In the "onload" event of the "child" document, a call is made to a function
    call in the "parent"'s Javascript like this:

    <BODY onload="parent. resizeIFrame(do cument, parent.getScrol lWidth(),
    parent.getScrol lHeight(), 'test');" >
    .... // rest of HTML
    </BODY>


    causing the "parent" document to resize the IFRAME to the scrollWidth and
    scrollHeight of the "child" document. It works great on one "parent"
    document, but on another I get 0 for the "child" document's scrollWidth and
    scrollHeight properties.

    What could cause this?

    BTW, Testing is being done with Internet Explorer 6.x.

    thx

    --

    Robert Oschler


  • Robert Oschler

    #2
    Re: What could cause scrollWidth to return 0?

    I accidentally duplicated the getScrollHeight () function call and forgot the
    resizeIFrame() function call, here is the latter:

    function resizeIFrame(id , x, y, callerId)
    {
    var SX = "";
    var SY = "";

    if (true)
    {
    SX = x + '';
    SY = y + '';

    if (SX.indexOf('px ') == -1)
    SX = SX + 'px';

    if (SY.indexOf('px ') == -1)
    SY = SY + 'px';

    // alert("(resizeI Frame), called by '" + callerId + "'> id = " + id
    + ", x = " + x + ", y = " + y);

    var iframeElement = null;

    // alert("(resizeI Frame) set iframeElement to null.");
    if (top.document.a ll)
    {
    // Internet Explorer.
    // alert('(resizeI frame) IE browser.');
    iframeElement = top.document.al l[id];

    } // if (document.all)
    else if (top.document.h eight)
    {
    // Other browsers.
    // alert('(resizeI frame) Non-IE browser.');
    iframeElement =
    top.document.ge tElementById(id );
    } // else if (top.document.h eight)

    if (iframeElement)
    {
    iframeElement.s tyle.width = x;
    iframeElement.s tyle.height = y;
    // alert("(resizeI Frame) iframeElement.s tyle (width, height) = "
    + iframeElement.s tyle.width + ", " + iframeElement.s tyle.height);
    }
    else
    alert('(resizeI Frame) iframeElement is null for id = ' + id);
    } // if (true)
    }

    // ---------------------------------------------------------------


    --

    Robert Oschler


    Comment

    Working...