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

Статус
В этой теме нельзя размещать новые ответы.

denover

Постоялец
Регистрация
5 Июн 2008
Сообщения
56
Реакции
7
Добрый день,

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

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

Спасибо
 
на самом php:
теоретически - да
практически, чтоб на 100% универсально - нет [ это эмулятор браузера писать надо ]

а вот на js скорее всего без особых проблем можно
 
Хотелось бы увидеть решение на js :)
 
2 врианта приходят на ум -
1- эмуляция браузера.
2- классы типа jquery. (phpQuery)
Затем анализируем - чтобы кардиналы других слоёв не покрывали нужный слой с элементом и прочее.

Если это не получится, то можно с помощью браузера - Закрашиваем нужный слой каким нибуть фоном, снимаем скриншот - и анализируем картинку)
 
кстати, насчет php - возможно задачу можно решить при помощи
Xweb Human Emulator


насчет js - мысль в том, чтобы загрузить для анализа страницу в iframe и через dom или jquery смотреть свойство visible.
тут есть один важный нюанс - из за соображений безопасности, вроде как, просто так к странице с чужого домена доступ через dom не получишь - тут надо исхитрятся.
один из вариантов обхода: на своем домене создаем php скрипт XXX.php, который по запросу [XXX.php?url=http://blabla.com/index.php] просто скачивает содержимое нужного url и отдает его уже со своего домена. [внутри этого скрипта, для универсальности, возможно придется делать замену всех ссылок на исходный домен (Для просмотра ссылки Войди или Зарегистрируйся) на наш домен через XXX.php?url=http://blabla.com/xyz ]
 
через dom или jquery смотреть свойство visible.
не, обычной проверкой на visible тут дело явно не ограничивается. А что если слой имеет координаты -9999px? Что если размеры этого слоя 0 ? Что если поверх него наложен другой слой? ...
 
не, обычной проверкой на visible тут дело явно не ограничивается. А что если слой имеет координаты -9999px? Что если размеры этого слоя 0 ? Что если поверх него наложен другой слой? ...
ну, если учитывать такие хитрости, то тогда можно попробовать через Human Emulator - внедрять в загруженный html в проверяемые элементы "сигнализацию" через OnMouseOver() и гонять курсор по всей рабочей области страницы.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху