views:

1445

answers:

3

I am interested to know if there is any way i can check from javascript code if an html element has overflow in it's content (but with the overflow property set to visible - so no scrollbars on the element). Can i check irrespective of scrollbars for overflow content (in a div tag for instance)? Thanks in advance.

A: 

document.getElementById("divID").style.overflow

Leon Tayson
+18  A: 

Normally, you can compare the client[Height|Width] with scroll[Height|Width] in order to detect this... but they'll be the same when overflow is visible. So a detection routine must account for this:

// Determines if the passed element is overflowing its bounds,
// either vertically or horizontally.
// Will temporarily modify the "overflow" style to detect this
// if necessary.
function checkOverflow(el)
{
   var curOverflow = el.style.overflow;
   if ( !curOverflow || curOverflow === "visible" )
      el.style.overflow = "hidden";

   var isOverflowing = el.clientWidth < el.scrollWidth 
      || el.clientHeight < el.scrollHeight;

   el.style.overflow = curOverflow;

   return isOverflowing;
}

Tested in FF3, IE6, Chrome 0.2.149.30.

Shog9
very thorough, nice answer
Chris MacDonald
thank you Shog9... the detection routine is, i think, what i needed, because i play with overflow (hidden/visible)
I have a similar question over at http://stackoverflow.com/questions/2023787/how-to-determine-if-hidden-overflow-text-is-at-top-or-bottom-of-element where I am trying to figure out what parts of the containing element have hidden overflow.
slolife