2010-11-20 1 views
6

Я пытаюсь создать собственный веб-браузер на основе элемента управления веб-браузера WPF. Я реализовал интерфейс IWebBrowser2 com и реализовал обработчики для Navigating(), NavigatedTo() и LoadCompleted() событий. Но эти обратные вызовы событий запускаются только один раз для страницы верхнего уровня. Теперь предположим, что на странице есть java-скрипт, css и файлы изображений; браузер загружает отдельные HTTP-запросы для загрузки этих файлов. Мы хотели бы захватить отдельные события HTTP-запроса. Например, если структура страницы HTML являетсяКак получить URL-адрес, для которого запускается событие downloadBegin()?

<html> 
    <body> 
    <img src="img1.bmp"/> 
    <imp src="img2.bmp"/> 
    </body> 
</html> 

Я хотел бы, чтобы захватить отдельное время загрузки для img1.bmp и img2.bmp. Может ли кто-нибудь предложить вам способ добиться этого?

Между тем я обнаружил, что для запроса на изображение и т. Д. Запускается событие downloadbegin() DWebBrowserEvents_Event, но я не могу получить URL-адрес, с которого он загружается, поскольку обработчик принимает значение void как параметр.

Так что я могу получить соответствующий URL-адрес, потому что есть событие, которое является downloadComplete, которое запускается, когда загрузка завершена. Таким образом, я могу добиться этого.

Но я должен решить вышеупомянутое время рендеринга изображений. Я застрял плохо. Пожалуйста, помогите мне ....

ответ

0

У меня нет глубоких знаний об этих занятиях, но я немного читал. в MDSN они говорят о событии downloadbegin(): http://msdn.microsoft.com/en-us/library/cc136556(v=vs.85).aspx

Это событие вызывается вскоре после того, как в DWebBrowserEvents :: BeforeNavigate событие или событие DWebBrowserEvents2 :: BeforeNavigate2, если навигация не будет отменена. Любая анимация или «занятая» индикация, которую должен отображать контейнер, должны быть подключены к этому событию.

и когда я проверил BeforeNavigate я увидел, что она имеет адрес в его PARAMATERS я нашел это (не MSDN но только логично, что Итл есть URL) http://blog.yezhucn.com/progie/222647_beforenavigate.htm

недействительным BeforeNavigate (
IDispatch * pDisp, VARIANT * & URL, VARIANT * & Флаги, VARIANT * & TargetFrameName, VARIANT * & PostData, VARIANT * & Головки, VARIANT_BOOL * & Отмена );

поэтому, если у вас всегда будет событие BeforeNavigate, вы можете использовать его URL-адрес и проверить следующее событие завершения загрузки, связанное с событием DownloadBegin. Я предполагаю, что для каждой загрузки он делает событие BeforeNavigate, но я не знаю, потому что я не могу попробовать (нет кода, чтобы проверить его), но я надеюсь, что это поможет.

+2

BeforeNavigate вызывается только один раз, а не один раз для каждого файла, загруженного для этой страницы. –

 Смежные вопросы

  • Нет связанных вопросов^_^