[Javascript] Проверка реальной видимости элемента в html

Тема в разделе "Другие языки", создана пользователем denover, 25 авг 2011.

Модераторы: Цукер
  1. denover

    denover Постоялец

    Регистр.:
    5 июн 2008
    Сообщения:
    56
    Симпатии:
    7
    Добрый день,

    мне нужен скрипт на js, который определяет реальную видимость некого элемента (скажем блока <div>) на странице. Т.е. фактически он должен определить, будет ли этот блок виден при открытии страницы в браузере.

    Скажите, возможно ли написать такой алгоритм ?

    Спасибо
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Существует или нет можно проверить на null , или если со стилями спрятан проверить на стиль display
    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Selector</title>
    
    <script language="javascript" type="text/javascript">
        function init(){
            //есть ли элемент id=item1
            if(document.getElementById('item1') != null){
                alert('item1 есть');
            }else{
                alert('item1 нет');
            }
            
            //есть ли элемент id=item2
            if(document.getElementById('item2') != null){
                alert('item2 есть');
                 //если есть, может спрятан (display:none)
                if(document.getElementById('item2').style.display == 'none'){
                    alert('item2 спрятан');
                }
            }else{
                alert('item2 нет');
            }
            
        }
        window.onload = init; 
    </script>
    
    </head>
    
    <body>
        <div id="item1">item1</div>
        <div id="item2" style="display:none;">item2</div>
    </body>
    </html>
    
    
     
  3. denover

    denover Постоялец

    Регистр.:
    5 июн 2008
    Сообщения:
    56
    Симпатии:
    7
    это понятно. Интересует более глубокое решение, чтобы скрипт понимал уровни слоев или, скажем, если некий элемент хитро спозиционировать по типу style="position:absolute;left:-5000px;"
     
  4. Mr.Emm

    Mr.Emm Постоялец

    Регистр.:
    5 май 2008
    Сообщения:
    144
    Симпатии:
    107
    http://stackoverflow.com/questions/704758/how-to-check-if-an-element-is-really-visible-with-javascript
     
    denover нравится это.