WebBrowser, порядок событий и другое

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

WebBrowser, порядок событий и другое

Сообщение Source » 17.04.2008 (Чт) 4:26

1.
В Form_Load стоит загрузка контрола WebBrowser:
Код: Выделить всё
     WB1.navigate "res://mshtml.dll/blank.htm"
     While WB1.document Is Nothing Or WB1.readyState <> READYSTATE_COMPLETE
'ждём создания документа
        DoEvents
     Wend

    WB1.document.write sHTML
    While WB1.readyState <> READYSTATE_COMPLETE Or WB1.document Is Nothing
'ждём создания документа
        DoEvents
     Wend
в Form_Resize:
Код: Выделить всё
     DoEvents
     ...   
        
     WB1.document.All.MyDIV_ID.innerHTML = sPageHTML

иногда срабатывает нормально, а иногда вылетает ошибка на WB1.document.All.MyDIV_ID.innerHTML = sPageHTML - объект не создан (или не существует)... Думаю, что при DoEvents в Form_Load иногда вызывается Form_Resize, где и происходит попытка записи в ещё не загруженный начальной страницей sHTML WB1. Или же Form_Resize вызывается строго после завершения Form_Load(Me.WindowState=Maximized, Me.StartUpPosition=CenterOwner)?

2. Почему, если указать в HTML атрибут тега ALT=*1, WebBrowser виснет, а IE нормально отображает всплывающую подсказку?
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.04.2008 (Чт) 10:13

Думаю, что при DoEvents в Form_Load иногда вызывается Form_Resize, где и происходит попытка записи в ещё не загруженный начальной страницей sHTML WB1.
Совершенно верно. On Error Resume Next поможет не думать об этом.
Почему, если указать в HTML атрибут тега ALT=*1, WebBrowser виснет, а IE нормально отображает всплывающую подсказку?
А если написать ALT="*1"?
Лучший способ понять что-то самому — объяснить это другому.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 17.04.2008 (Чт) 14:20

Antonariy, ну ты и нашёл выход :) Всё дожно быть выполено, никаких обходов. Ладно, попробую придумать чё-нить, главное мои мысли подтвердились.

Ну вообще-то у меня было ALT=*!!! (подзабыл), ALT='*!!!' помогло, но вопрос остаётся - почему WebBrowser не может обработать ALT=*!!!, а IE обрабатывает? Чем является символ '*' для HTML или комбинация '*!'?
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList