|
|
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Возникла у меня проблема, которую костыльно решить несложно, а нормально — я пока не нагуглил. Программа у меня пока делает следующее: открывает страничку в браузере по умолчанию или ином(не IE именно важно, это осложняет дело). После чего делает аккуратненький скриншот. Код не привожу, он тривиальный, да и загвоздка не в нем, а в том, что скрин окна браузера делать логично в тот момент, когда страничка загрузится полностью. А навороченность её заранее, конечно, не известна. Потому решение поставить Sleep() в конец кода на самом деле очень ненадежное. Из Javascript/PHP узнать, когда окончится загрузка легко, но доступа к этим возможностям из win32 приложения нет; компонент Delphi TWebBrowser (есть аналоги в других языках и библиотеках) умеет сообщать, когда загрузка завершается _внутри_него_, что сильно не тоже самое (компонент работает через IE). Раскопки показали, что есть технология DDE устаревшая, которая небогато, даже хреново документирована для браузеров, но Chrome вот её не поддерживает совсем. Точно ли поможет RegisterURLEcho (описание от MS) пока не успел проверить, т.к. хром тоже нужен. На данный момент играюсь с задержкой и веб-компонентом, но хотелось бы добиться стабильного и надежного решения. Обидно же, ведь сам браузер момент загрузки ловит, неужели никак его "спросить" нельзя)) Буду благодарен, если кто подаст хоть какие-то идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 00:25 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Genco, А взять размер из HTTP-заголовка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 01:06 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Эмм? размер? Просто моя win32 программа - внешняя по отношению к браузеру. Условно говоря, будет делать скриншот загруженной страницы в окне браузера. Вопрос в том, можно ли как-то строго определить, что страница в этом браузере загрузилась , без задержки по времени. Мне посоветовали сделать проксирующий сервер маленький, который будет как-либо модифицировать страницы, либо на худой конец замерять время загрузки грубо, но это немножко геморойно, неужели ничего попроще нельзя придумать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 01:21 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Genco, если доступ к коду браузера есть (т.е. он самописный ) то http://www.interface.ru/home.asp?artId=8317 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 01:53 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Ы, пасиб. Браузеры то обычные - opera, IE, chrom и т.д. Потому с исходниками как-то не очень, да и фоткать для сравнения хочу все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 02:07 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
GencoЫ, пасиб. Браузеры то обычные - opera, IE, chrom и т.д. Потому с исходниками как-то не очень, да и фоткать для сравнения хочу все. Тогда проксирующий сервер - ход мыслей верный, но и первый мой ответ тогда верен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2012, 02:54 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Миссия невыполнима, ибо загрузка страницы не прекращается с передачей html данных В общем случае загрузка может не завершитья никогда(скрипты могут непрерывно освежать контент) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 09:17 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
ИзопропилМиссия невыполнима, ибо загрузка страницы не прекращается с передачей html данных В общем случае загрузка может не завершитья никогда(скрипты могут непрерывно освежать контент) Вы имеете ввиду все ити милые особености WEB 2.0 ? А если на большие размеры просто заточиться, должна же программа хоть немного думать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 10:09 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
BlackGnomeГуестдолжна же программа хоть немного думать? Чем? Цикл обновления контента может бесконечным.(например - онлайн лента новостей, курсов , погоды и тп) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 10:32 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Ну вклячит OnLoad скрипт новый iframe - и что делать? что есть завершение загрузки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 10:33 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
ИзопропилBlackGnomeГуестдолжна же программа хоть немного думать? Чем? Цикл обновления контента может бесконечным.(например - онлайн лента новостей, курсов , погоды и тп) Есть такая весЧ - заголовок, кажется заголовки никто не отменял... Но тогда получится уже не "утилитка" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 11:15 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
BlackGnomeГуестЕсть такая весЧ - заголовок, кажется заголовки никто не отменял... какое отношение имеет заголовок к выполнению скриптов на странице и загрузке iframe и изображений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 11:34 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
ИзопропилBlackGnomeГуестЕсть такая весЧ - заголовок, кажется заголовки никто не отменял... какое отношение имеет заголовок к выполнению скриптов на странице и загрузке iframe и изображений? Может мы о разном, если делать проксирование, то через службу пройдёт и тип данных и предполагаемый размер так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 12:30 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
BlackGnomeГуестИзопропилпропущено... какое отношение имеет заголовок к выполнению скриптов на странице и загрузке iframe и изображений? Может мы о разном, если делать проксирование, то через службу пройдёт и тип данных и предполагаемый размер так?Веб-страница - это не только html, а еще и стили, скрипты, картинки, и т.д, которые загружаются отдельными запросами. А есть еще и ajax-запросы, которые выполняются позже. И есть такие сайты, где до выполнения ajax-запросов страница, с точки зрения пользователя, смотрящего в экран браузера, еще не полностью загружена. А есть такие сайты, где ajax-запросы выполняются неперывно, с целью обновления чата/новостей/биржевых котировок и т.п. И вот задача - как авроматически определить, когда страница полностью загружена, с точки зрения юзера, глядящего в экран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 12:57 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
?А есть такие сайты, где ajax-запросы выполняются неперывно, с целью обновления чата/новостей/биржевых котировок и т.п. И вот задача - как авроматически определить, когда страница полностью загружена, с точки зрения юзера, глядящего в экран.А как вообще такая страница может быть "полностью загружена"? Это всё равно что открыть в плеере видеофайл и попытаться определить, "полностью ли он загружен" :) Вот, кстати, задачка вам - открываете на тытрубе любое видео, начинаете смотреть... в какой момент страница будет "полностью загружена"? Когда хотя бы с этим определитесь, можно будет думать дальше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 13:33 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
?BlackGnomeГуестпропущено... Может мы о разном, если делать проксирование, то через службу пройдёт и тип данных и предполагаемый размер так?Веб-страница - это не только html, а еще и стили, скрипты, картинки, и т.д, которые загружаются отдельными запросами. А есть еще и ajax-запросы, которые выполняются позже. И есть такие сайты, где до выполнения ajax-запросов страница, с точки зрения пользователя, смотрящего в экран браузера, еще не полностью загружена. А есть такие сайты, где ajax-запросы выполняются неперывно, с целью обновления чата/новостей/биржевых котировок и т.п. И вот задача - как авроматически определить, когда страница полностью загружена, с точки зрения юзера, глядящего в экран. А у нас по-любому будет размер и теория нечеткуих множеств :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 13:40 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Ну не я автор вопроса, но с точки зрения "сделать аккуратненький скриншот"... Страничка с видео полностью загружена, когда начальные титры прошли :). А еще на каких-то сайтах вешают рекламу на весь экран, и предлагается посмотреть ее ...дцать секунд или нажать кнопочку, в которую хрен попадешь. Деать скриншот видимо надо, когда рекламный баннер закроется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 13:45 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
?, ,т.е. в текущей постановке задачи самая простая система, которая может определить, полностью или нет загружена страница - человек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 13:55 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
?А еще на каких-то сайтах вешают рекламу на весь экранА на ютубе реклама вообще "встроена" в ролик, что ещё сложнее автоматически отследить.\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 13:56 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
tanglirА как вообще такая страница может быть "полностью загружена"? Это всё равно что открыть в плеере видеофайл и попытаться определить, "полностью ли он загружен" :) Потоковое видео - так чётче будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 14:32 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
GencoЫ, пасиб. Браузеры то обычные - opera, IE, chrom и т.д. Потому с исходниками как-то не очень, да и фоткать для сравнения хочу все. Попытка найти доказательство того что картинка в браузере ЗАГРУЖЕНА уведёт тебя к тезисам Курта Гёделя и т.д. Поэтому ограничся таймером. Условно считаем что сайт загружен через 30 сек и там есть все слои и картинки. И делаем скриншот. Дополнительно можно считать трафик и проверять что ключевые html-ки прогружены до упора. Всё вобщем-то. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 14:36 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Написать к каждому браузеру плагин, который изнутри оценивает степень "готовности" документа и передаёт некое событие вовне, где его видит внешняя софтина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:20 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Пол-царства за такой плагин. А особенно за способность объяснить его логику без эвристики и метафизики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 17:31 |
|
||
|
Определить окончание загрузки веб-страницы
|
|||
|---|---|---|---|
|
#18+
Genco, зачем открывать страничку в браузере? TWebBrowser в Delphi, WebBrowser в Студии это по сути встроенный в программу IE. WebBrowser.Document обеспечивает программный доступ ко всем элементам страницы. DocumentCompleted конечно не очень надёжен. Свойства ReadyState и Url.AbsoluteUri могут несколько помочь. Именно через него и удобнее всего разбирать странички, вплоть до выполнения скриптов и всего остального. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 23:09 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37905169&tid=1342180]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 431ms |

| 0 / 0 |
