What could cause scrollWidth to return 0?

R

Robert Oschler

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
 
R

Robert Oschler

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)
}

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

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,480
Members
44,900
Latest member
Nell636132

Latest Threads

Top