WebBrowser

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

WebBrowser

Сообщение Sun07 » 24.08.2006 (Чт) 18:38

Подскажите, плиз, как поменять атрибуты myclass в уже загруженной странице в WebBrowser (или идентификатора аналогично myclass). При этом желательно, чтобы страница обновилась.

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>

</HEAD>
<STYLE TYPE="text/css">

.myclass{color: #00FF00; font-size:30pt; font-family: Garamond; font-weight: bold; font-style: italic;}

</STYLE>

<BODY bgColor="000000">

<P CLASS="myclass">Текст</P>

</body>
</html>

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.08.2006 (Пт) 9:08

Сгенерировать html с измененными атрибутами и загрузить его в Webbrowser?
Быть... или не быть. Вот. В чём вопрос?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 25.08.2006 (Пт) 9:52

как поменять атрибуты myclass
Почему я не вижу на этой странице ни одного атрибута mycalss?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.08.2006 (Пт) 9:54

Имелось в виду "атрибуты класса myclass".

.myclass{color: #00FF00; font-size:30pt; font-family: Garamond; font-weight: bold; font-style: italic;}
Быть... или не быть. Вот. В чём вопрос?

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 25.08.2006 (Пт) 12:17

uhm писал(а):Сгенерировать html с измененными атрибутами и загрузить его в Webbrowser?
WebBrowser1.Document.Write? А как выгрузить старую страницу HTML? Я пробовал разместить описание
<STYLE TYPE="text/css">
.myclass{color: #00FF00; font-size:30pt; font-family: Garamond; font-weight: bold; font-style: italic;}
</STYLE>
в BODY, как ни странно, работает! И тогда можно через DIV поменять описание. Или это грозит какими-то последствиями, ведь стили должно описывать в HEAD?

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 25.08.2006 (Пт) 12:20

Если правильно понял задачу,..
Код: Выделить всё
Option Explicit
'References: Microsoft HTML Object Library
'Controls: Microsoft Internet Controls
'добавить на форму WebBrowser с именем WebBrowser1
' и CommandButton Command1

Private Sub Form_Load()
    'загрузка документа
    WebBrowser1.navigate "about:" & _
    "<HTML><HEAD>" & _
    "<META http-equiv=Content-Type content=""text/html; charset=windows-1251"">" & _
    "<STYLE TYPE=""text/css"">" & _
    ".myclass{color: #00FF00; font-size:30pt;}" & _
    "</STYLE></HEAD>" & _
    "<BODY bgColor=""000000"">" & _
    "<P CLASS=""myclass"">Текст</P> " & _
    "</BODY></HTML>"
End Sub

Private Sub Command1_Click()
    Dim mDoc As MSHTML.IHTMLDocument
    Dim oCSS As MSHTML.IHTMLStyleSheet
   
    While WebBrowser1.document Is Nothing
        DoEvents
    Wend
    'присваиваем html документ
    Set mDoc = WebBrowser1.document
    While mDoc.styleSheets Is Nothing
        DoEvents
    Wend
    Set oCSS = mDoc.styleSheets.Item(0)
    oCSS.rules(0).Style.Color = "#FF0000"
End Sub

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 25.08.2006 (Пт) 12:22

или можно одним махом заменить только весь заголовок страницы HTML в WebBrowser?

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 25.08.2006 (Пт) 15:20

2 Sun07
Ну а мой пример подошол?

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 25.08.2006 (Пт) 17:16

marvan писал(а):2 Sun07
Ну а мой пример подошол?
Я ещё не пробовал. Сейчас попробую и напишу. Почему 2? Может дадите ссылку на статью, где все методы WebBrowser подробненько излагаются, а то в поиске не нашёл ничего путного... :(

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 25.08.2006 (Пт) 17:58

Marvan, спасибо, умница! Где взяли такую инфу? Хочется почитать коментарии :)

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 26.08.2006 (Сб) 0:07

Я смотрю, вы сразу загружаете документ в броузер. А везде в примерах приведён такой пример:
WB.navigate "res://mshtml.dll/blank.htm"
While WB.document Is Nothing
DoEvents
Wend
WB.document.write sMyPageHTML
странно, зачем грузить пустой документ, потом свой. По вашему проще :) И ещё - у меня выскакивает предложение с предложением подключиться к инету или работать автономно. Как от этого избавиться (сделать всегда автономно, offline)?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.08.2006 (Сб) 9:03

странно, зачем грузить пустой документ, потом свой. По вашему проще И ещё - у меня выскакивает предложение с предложением подключиться к инету или работать автономно. Как от этого избавиться (сделать всегда автономно, offline)?

В form_load -WB.stop
И вообще говоря этот пример очень правильный.
marvan
Ты путаеш новичка кривыми методами.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 28.08.2006 (Пн) 8:27

По поводу примера.
1. В данном случае - ключевая задача сменить стиль, потому и выбрал такой способ загрузки. Просто он самый компактный для примера.
На деле не рекомендую им пользоваться, т.к. в нём, кажется, есть ограничение на размер html - кода.
2. Три моих статьи по теме здесь
3. Приведённый пример уникален (сам разбирался), ибо идёт в разрез с общей концепцией CSS. Ну не предназна эта технология для динамической модификации.
Обычно таблицы стилей формируют заранее отдельными файлами, а потом переключаются между ними.

Спасибо за отзывы. :)

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 28.08.2006 (Пн) 11:46

WB.Stop - прекращение загрузки страницы. Куда это лепить? У меня страница грузится локально, нет никаких адресов внешнего инета (просто HTML - страница). Я не пойму, почему выскакивает предложение с предложением подключиться к инету или работать автономно? И выскакивает оно в непонятные моменты, при завершении работы программы (запускал пока только из под дизайнера).

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 28.08.2006 (Пн) 12:20

Sun07 писал(а):WB.Stop - прекращение загрузки страницы. Куда это лепить?

ANDLL писал(а):В form_load-WB.stop

Так видно?
wb грузит после загрузки формы страницу по умолчанию.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 28.08.2006 (Пн) 16:18

да видно. Чего он её грузит, я же загрузил в него свою страницу? Сначала загрузил пустой бланк, потом свою страницу. И сообщение у меня выскакивает при завершении проги, а не при её старте...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 28.08.2006 (Пн) 16:32

Ну так и надо говорить, что при заверешении:)
А грузит - потому что частьMSIE. Проверь.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 29.08.2006 (Вт) 1:07

Почему не работают методы:
WB.document.styleSheets.Item(0).rules(0).Style.Bold
WB.document.styleSheets.Item(0).rules(0).Style.Italic
WB.document.styleSheets.Item(0).rules(0).Style.Name
WB.document.styleSheets.Item(0).rules(0).Style.Size
что такое Item и rules в данном случае?

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 29.08.2006 (Вт) 8:31

Sun07 писал(а):Почему не работают методы:
...
WB.document.styleSheets.Item(0).rules(0).Style.Italic
...


В продолжение моего примера:
Стиль можно добавить:
Код: Выделить всё
    oCSS.addRule ".myclass", "{font-style: italic;}"

Стиль можно изменить:
Код: Выделить всё
    oCSS.rules(0).Style.fontStyle = "italic"


Ну а выше приведённая строка должна выглядеть так:
Код: Выделить всё
WB.document.styleSheets.Item(0).rules(0).Style.fontStyle = "italic"

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 29.08.2006 (Вт) 12:44

спасибо, всё работает. Интересно, что при выполнении неверных методов выкидывало с процедуры и не выполнялись последущие команды (например, после WB.document.styleSheets.Item(0).rules(0).Style.Bold )

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

Сообщение Antonariy » 29.08.2006 (Вт) 13:04

Потому что у тебя наверняка обработчик предыдущего уровня On Error Resume Next.
Лучший способ понять что-то самому — объяснить это другому.

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 29.08.2006 (Вт) 15:03

всё таки хочется знать, что такое Item и rules в данном случае?

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

Сообщение Antonariy » 29.08.2006 (Вт) 16:14

styleSheets.Item(х) это набор стилей, один из <style>, <LINK REL="STYLESHEET">, что есть на странице
Rules(х) это список правил набора, один из body {...}, table {...} ....

Уровень абстракции автора оставляет желать много лучшего. Автор, займись буддизмом!
Лучший способ понять что-то самому — объяснить это другому.

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 10.09.2006 (Вс) 19:34

Sun07 писал(а):Я не пойму, почему выскакивает предложение с предложением подключиться к инету или работать автономно? И выскакивает оно в непонятные моменты, при старте и при завершении работы программы (запускал пока только из под дизайнера) .

ни VB.Visible=false ни VB.Stop не помогают. Что за дела?


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

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

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

    TopList