WebBrowser и нерабочие гиперссылки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

WebBrowser и нерабочие гиперссылки

Сообщение dr.MIG » 17.09.2008 (Ср) 11:50

В ресурсы упакованы HTML-документы.
Загружаю первую страницу:
Код: Выделить всё
    WebBrowser.Navigate "res://mshtml.dll/blank.htm"
         While WebBrowser.ReadyState <> READYSTATE_COMPLETE
              DoEvents
         Wend
    Set mDoc = WebBrowser.Document
    Set mIDoc = WebBrowser.Document
    strHTML = StrConv(LoadResData("index.html", 23), vbUnicode)
    mIDoc.write strHTML


На этой странице имеются гиперссылки на дугие документы, также находящиеся в ресурсах. Ссылки имеют вид <a href="document1.html">Документ 1</a>. Естественно, при переходе по такой ссылке мы попадаем на about: и открывается страница, содержащая "<HTML>blankdocument1</HTML>".

По логике, для исправления ситуации добавляем в HTML-код страницы тэг "<base href="">", а в программе после загрузки документа выполняем
Код: Выделить всё
mIDoc.getElementsByTagName("BASE").Item(0).href = _
    "res://" & App.Path & "\" & App.EXEName & ".exe"


После этого ссылки вообще перестают работать, т.е. щелчок по ней не приводит вообще ни к чему. В чём я не прав и как прикрутить нормальную навигацию?
Salus populi suprema lex

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

Re: WebBrowser и нерабочие гиперссылки

Сообщение Antonariy » 17.09.2008 (Ср) 12:31

dr.MIG писал(а):В чём я не прав и как прикрутить нормальную навигацию?

В blank.htm. Нужно сразу делать WebBrowser.Navigate "res://" & App.Path & ".exe/index.html" и все будет работать.
Код: Выделить всё
mIDoc.getElementsByTagName("BASE").Item(0).href = _
    "res://" & App.Path & "\" & App.EXEName & ".exe"
Не-а. Base href должно быть в тексте уже в момент загрузки. Работать будет все кроме стилей с конструкцией url().
Лучший способ понять что-то самому — объяснить это другому.

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

Re: WebBrowser и нерабочие гиперссылки

Сообщение dr.MIG » 17.09.2008 (Ср) 17:18

Да, действительно... Спасибо!
Salus populi suprema lex


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

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

Сейчас этот форум просматривают: Google-бот и гости: 30

    TopList