![]() |
|
![]() ![]() ![]() |
|
GraySE |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
Привет! Такой вопрос...
Я обрабатываю страницу (IHTMLDocument2.body.innerHTML), получаемую браузером на событие DownloadComplete. На момент изменения innerHTML, пользователю уже выводится в браузер оригинальная страница. И он видит изменения на ней чуть позже, чем отображается сама страница. Как можно заблокировать вывод страницы пользователю, до тех пор, пока я не сделаю на ней нужные изменения? Спасибо. |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: нет Всего: 10 |
Можно попробовать сделать body.style.visible=false, а потом true. Но это
![]() -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
GraySE |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
Хм... А на какое событие это делать то? На BeforeNavigate, вроде бы элемента body ещё не существует?
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: нет Всего: 10 |
Возможно, поместить всю обработку в body.onLoad.
А, если не существует, тогда не знаю. Это сообщение отредактировал(а) Ulysses4j - 18.7.2008, 20:49 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
GoldFinch |
|
||||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
АП.
та же проблема. есть свое окно с компонентом WebBrowser, хочу при загрузке страницы внести в нее изменения. т.к. изменений много, хочу внедрить туда js код который произведет всю работу. вариант 1:
вариант 1а:
вариант 2
при использовании вариантов 1 и 1а, span появляется, а скрипт не срабатывает (alert'а нет) при использовании варианта 2 span появляется, браузер виснет не успев показать остальное содержимое страницы что делать чтобы выполнить большой скрипт в загружаемой странице? |
||||||
|
|||||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
во втором способе было неправильное использование "javascript:", поправил - заработало как и 1й способ %)
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
таки не до конца поправил %)
после "javascript:" должна быть только одна операция, значит чтобы записать несколько, надо применить идиому (function(){ ...код; код; .... })() возможно это надо завернуть в void(), и возможно надо заменить пробелы на %20, хотя у меня и так работает (ie7) |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
для метода с insertAdjacentHTML помогло добавление атрибута defer:
также тег script не должен быть первым потомком body, перед ним должен быть какой-то другой (непустой?) тег |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
остается непонятным такой вопрос:
если создавать элемент script, то как получить его интерфейс IHTMLScriptElement, чтобы вызвать put_text? вот такой код не работает, QueryInterface возвращает E_NOINTERFACE
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
но в любом случае,
на момент события DownloadComplete на экране еще нет содержимого body, зато нарисован его фон (background-image, background-color). по этому надо ловить NavigateComplete2. однако, при наступлении события NavigateComplete2 тег body получить еще нельзя, зато можно получить стили, и добавить новые правила
при вызове addRule надо обратить внимание на то, что строки должны быть получены вызовом SysAllocString, иначе будет ошибка E_INVALIDARG Это сообщение отредактировал(а) GoldFinch - 4.4.2010, 12:41 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |