WebBrowser: изменение HTML страниц на лету!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

WebBrowser: изменение HTML страниц на лету!

Сообщение $Yastrebov$ » 24.09.2007 (Пн) 0:47

Собственно есть страница, которая должна подгрузится в WebBrowser.
Необходимо перехватить ее до отображения в WebBrowser, найти и заменить нужный текст на мой и вывести в WebBrowser уже отредактированную страницу.

Как искать текст по странице я знаю.
Подозреваю, что нужно использовать метод WebBrowser.Document.write для редактирования!

Вот только где вставить код? На каком этапе?
Изменения должны коснуться только части страницы, остальное должно остаться неизменным!
Подтолкните, пожалуйста!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 24.09.2007 (Пн) 21:42

Ни у кого никаких идей? :? Google тоже правду не выдает.
Совсем плохо дело...

Эх... Тема открыта!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 24.09.2007 (Пн) 22:05

Грузи страницу, проверяй ReadyState, как загрузится получай необходимый элемент любым из сбособов (getElementById, getElementByName, getElementByTagName) и меняй ему innerHTML.
Salus populi suprema lex

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 24.09.2007 (Пн) 23:25

Был уверен, что innerHTML только для чтения! Даже и не стал пробовать! Спасибо, все отлично работает.
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

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

Сообщение Antonariy » 25.09.2007 (Вт) 8:55

Однако это работает после отображения...
Лучший способ понять что-то самому — объяснить это другому.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 25.09.2007 (Вт) 11:48

2Antonariy

Ну если менять object.Document.innerHTML при readyState="interactive" или даже readyState="loaded", то замена практически визуально не заметна. При readyState="complete" немного заметнее, но тоже сносно.

А есть еще какой-то вариант?
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

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

Сообщение Antonariy » 25.09.2007 (Вт) 14:22

Есть, но как делается не знаю.
Лучший способ понять что-то самому — объяснить это другому.

agat344
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 22.09.2003 (Пн) 15:57

Сообщение agat344 » 07.04.2008 (Пн) 16:12

Может я чего-то не понимаю, но у меня объект - "WebBrowser1.Document.innerHTML" ничего не показывает :

А сам код показывается только через команду
"WebBrowser1.Document.documentElement.innerHTML"

Может подменять надо WebBrowser1.Document.documentElement.innerHTML , а не WebBrowser1.Document.innerHTML ????

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 07.04.2008 (Пн) 20:55

agat344 писал(а):Может я чего-то не понимаю, но у меня объект - "WebBrowser1.Document.innerHTML" ничего не показывает :

А сам код показывается только через команду
"WebBrowser1.Document.documentElement.innerHTML"

Может подменять надо WebBrowser1.Document.documentElement.innerHTML , а не WebBrowser1.Document.innerHTML ????

Код: Выделить всё
Private Sub WebBrowser_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    MsgBox WebBrowser.Document.body.innerHTML
End Sub

agat344
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 22.09.2003 (Пн) 15:57

Сообщение agat344 » 23.04.2008 (Ср) 15:29

Я так делаю подмену картинок в документе:

Код: Выделить всё
Private Sub WebBrowser1_DownloadComplete()
For i = 0 To (WebBrowser1.Document.images.length - 1)
    WebBrowser1.Document.images(i).src = ""
Next i
End Sub


Но что-то не очень работает, всё равно замена происходит после показа. А как сделать помену до начала показа? Вот ведь важный вопрос......


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

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

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

    TopList