What could cause scrollWidth to return 0?

Discussion in 'Javascript' started by Robert Oschler, Sep 6, 2003.

  1. 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.documentElement.scrollWidth + gMargin + 'px';
    else
    ret = doc.body.scrollWidth + gMargin + 'px';
    } // if (doc.all)
    else if (doc.width)
    // Other browsers.
    ret = doc.width + gMargin + 'px';

    // alert('(getScrollWidth) 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.documentElement.scrollHeight + gMargin + 'px';
    else
    ret = doc.body.scrollHeight + gMargin + 'px';
    } // if (doc.all)
    else if (doc.height)
    // Other browsers.
    ret = doc.height + gMargin+ 'px';

    // alert('(getScrollHeight) 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.documentElement.scrollHeight + gMargin + 'px';
    else
    ret = doc.body.scrollHeight + gMargin + 'px';
    } // if (doc.all)
    else if (doc.height)
    // Other browsers.
    ret = doc.height + gMargin+ 'px';

    // alert('(getScrollHeight) 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(document, parent.getScrollWidth(),
    parent.getScrollHeight(), '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, Sep 6, 2003
    #1
    1. Advertising

  2. 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("(resizeIFrame), called by '" + callerId + "'> id = " + id
    + ", x = " + x + ", y = " + y);

    var iframeElement = null;

    // alert("(resizeIFrame) set iframeElement to null.");
    if (top.document.all)
    {
    // Internet Explorer.
    // alert('(resizeIframe) IE browser.');
    iframeElement = top.document.all[id];

    } // if (document.all)
    else if (top.document.height)
    {
    // Other browsers.
    // alert('(resizeIframe) Non-IE browser.');
    iframeElement =
    top.document.getElementById(id);
    } // else if (top.document.height)

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

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


    --

    Robert Oschler
    Robert Oschler, Sep 6, 2003
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?UGF1bA==?=

    What could cause left open SQL data connection

    =?Utf-8?B?UGF1bA==?=, Apr 2, 2004, in forum: ASP .Net
    Replies:
    6
    Views:
    454
    =?Utf-8?B?UGF1bA==?=
    Apr 5, 2004
  2. =?Utf-8?B?cm9kY2hhcg==?=

    scrollWidth mystery

    =?Utf-8?B?cm9kY2hhcg==?=, Sep 16, 2006, in forum: ASP .Net
    Replies:
    0
    Views:
    329
    =?Utf-8?B?cm9kY2hhcg==?=
    Sep 16, 2006
  3. laredotornado
    Replies:
    0
    Views:
    369
    laredotornado
    Jul 10, 2008
  4. david.karr
    Replies:
    22
    Views:
    669
    Arne Vajhøj
    Aug 30, 2009
  5. liketofindoutwhy

    node.offsetWidth vs clientWidth vs scrollWidth

    liketofindoutwhy, Apr 24, 2008, in forum: Javascript
    Replies:
    5
    Views:
    223
    Rik Wasmus
    Apr 24, 2008
Loading...

Share This Page