Document.ondataavailable

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

Document.ondataavailable

Сообщение Scorry_1 » 09.06.2006 (Пт) 21:37

Кто работал с этим событием? Поделитесь секретом, пожалуйста, как его прописать? onreadystatechange работает прекрасно, а ondataavailable почему-то нет :(. Проверял выполнение события на текстбоксе - если событие произошло, то текст меняется...

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 10.06.2006 (Сб) 8:30

Что-то тема вообще никого не заинтересовала :( Неужели никто не пользовался раньше этим событием?

Крост
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 291
Зарегистрирован: 30.01.2005 (Вс) 6:06
Откуда: Питер

Сообщение Крост » 10.06.2006 (Сб) 9:54

Scorry_1
О чём собственно речь?

Поподробнее, тогда может чего подскажут)
Хороший :D, плохой :x, злой :twisted:.

(Не)Люблю кАпаться в чЮжих сорсах.

Хочешь узнать что такое Piligrim? Прошу - http://www.piligrim-gps.ru/

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 10.06.2006 (Сб) 17:32

Событие все-таки происходит :)
НО вот другая сложилась трудность - имею код:
Код: Выделить всё
Private Function proba(doc As HTMLDocument)
    For i = 0 To doc.images.length - 1
        doc.images.Item(i).src = ""
    Next
End Function
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.rambler.ru/"
End Sub
Private Sub WebBrowser1_DownloadBegin()
On Error Resume Next
WebBrowser1.Document.ondataavailable = proba(WebBrowser1.Document)
WebBrowser1.Document.onreadystatechange = proba(WebBrowser1.Document)
End Sub

В этом случае функция proba вызывается 1 раз событием ondataavailable и 1 раз - onreadystatechange, а по замыслу должны всегда, когда происходят события.
А в этом случае:
Код: Выделить всё
Private WithEvents docu As HTMLDocument
Private Function proba(doc As HTMLDocument)
    For i = 0 To doc.images.length - 1
        doc.images.Item(i).src = ""
    Next
End Function
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.rambler.ru/"
End Sub
Private Sub WebBrowser1_DownloadBegin()
On Error Resume Next
Set docu = WebBrowser1.Document
End Sub
Private Sub docu_onreadystatechange()
Call proba(docu)
End Sub
Private Sub docu_ondataavailable()
Call proba(docu)
End Sub

Функция выполняется, но с опозданием - когда картинки уже загружены, в общем при readystate=Complete
И никак не могу по нормальному заставить работать код :(...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.06.2006 (Сб) 17:38

Scorry_1 писал(а):Событие все-таки происходит :)
НО вот другая сложилась трудность - имею код:
Код: Выделить всё
Private Function proba(doc As HTMLDocument)
    For i = 0 To doc.images.length - 1
        doc.images.Item(i).src = ""
    Next
End Function
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.rambler.ru/"
End Sub
Private Sub WebBrowser1_DownloadBegin()
On Error Resume Next
WebBrowser1.Document.ondataavailable = proba(WebBrowser1.Document)
WebBrowser1.Document.onreadystatechange = proba(WebBrowser1.Document)
End Sub

В этом случае функция proba вызывается 1 раз событием ondataavailable и 1 раз - onreadystatechange, а по замыслу должны всегда, когда происходят события.

:lol: :lol:
Изображение

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 10.06.2006 (Сб) 17:45

:lol: :lol:


А более понятным языком ты свои мысли можешь выразить? :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.06.2006 (Сб) 17:48

Код: Выделить всё
WebBrowser1.Document.ondataavailable = proba(WebBrowser1.Document)

означает "вызвать proba с параметром WebBrowser1.Document, и результат (пустое значение) записать в WebBrowser1.Document.ondataavailable"

теперь понятно, почему твоя proba вызывается по разу? ;-)
Изображение

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 10.06.2006 (Сб) 18:07

tyomitch, Понятно. На самом деле это не имеет значения, т.к. попытка записать любое значение а ondataavailable ни к чкму не приведет, а вот исполнение кода
Код: Выделить всё
For i = 0 To doc.images.length - 1
doc.images.Item(i).src = ""
Next

произойдет. Но, как я понял из сказанного произойдет только в момент вызова, А как мне сделать чтобы вызов происходил всегда при событии ondataavailable, onreadystatechange? есть альтернатива
Код: Выделить всё
Private Sub docu_onreadystatechange()
Call proba(docu)
End Sub

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 11.06.2006 (Вс) 8:23

Занятная ситуация :):
Код: Выделить всё
Private Sub docu_onreadystatechange()
Text1.Text = Text1.Text + " " + docu.ReadyState
Text1.Text = Text1.Text + " " + docu.body.outerHTML
Text2.Text = Text2.Text + " " + docu.ReadyState
Text2.Text = Text2.Text + " " + docu.documentElement.outerHTML
End Sub

docu.documentElement.outerHTML записывается в текстовое окно когда docu.ReadyState = "interactive", а docu.body.outerHTML в этот момент пуст и запись body происходит только после docu.ReadyState = "complete " :)
В самом же docu.documentElement.outerHTML нет body в момент ReadyState=interactive, и появляется в момент ReadyState=complete. Таким образом, остановить процесс выполнения сценариев и скриптов, а также загрузку изображений и при этом получить полный код страницы мне не удалось... С чем это связать незнаю, видимо, загрузка кода всего документа уже является событием ReadyState=complete, а выполнения скриптов и загрузка изображений, это уже дело каждого браузера и к событию ReadyState отношения не имеет.


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 13

    TopList  
cron