Следующая функция определяет видимость элемента, проверяя значения visible и display. Проверяются как стили установленные при помощи атрибута style, так и стили установленные в CSS. Также проверяется, находится ли элемент внутри невидимого элемента:
function isVisible(obj)
{
if (obj == document) return true
if (!obj) return false
if (!obj.parentNode) return false
if (obj.style) {
if (obj.style.display == 'none') return false
if (obj.style.visibility == 'hidden') return false
}
// проверяем вычисленные значения стилей
if (window.getComputedStyle) {
var style = window.getComputedStyle(obj, "")
if (style.display == 'none') return false
if (style.visibility == 'hidden') return false
}
// вычисленные значения стилей для IE
var style = obj.currentStyle
if (style) {
if (style['display'] == 'none') return false
if (style['visibility'] == 'hidden') return false
}
return isVisible(obj.parentNode)
}
