Переход на метку на странице HTML

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

Переход на метку на странице HTML

Сообщение Alexanbar » 16.02.2006 (Чт) 23:25

Вот, предположим, загрузил я документ в DHTMLEdit. Нужно найти в нём определённый тэг типа card id="euro" и перейти на на него, т.е. промотать загруженный документ, если адрес имеет вид:
http://xxx/yyy/#euro. :?: По всей видимости, действие сведётся к посылке сообщения на скролл.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.02.2006 (Пт) 3:29

Я не знаю что такое DHTMLEdit, но общий метод
Код: Выделить всё
<a name=anchor>

тогда
Код: Выделить всё
http://www.server.com/page.htm#anchor

проскролит страницу на нужное место.

Тег можно добавить динамически средствами DOM.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.02.2006 (Пт) 3:50

тогда
Код:
http://www.server.com/page.htm#anchor

проскролит страницу на нужное место.


А ты хоть в курсе, что для DHTMLEdit это не действует, иначе бы здесь этого вопроса не было!
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.02.2006 (Пт) 5:07

Хакер
А ты уверен что прочитал правильно мой пост?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

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

Сообщение Крост » 17.02.2006 (Пт) 5:21

Может я опять не прав, но по-моему всё просто:

Код: Выделить всё
Dim HDoc as IHTMLDocument2
Dim Elm as IHTMLElement

Private Sub SCRL()
  Set Elm = HDoc.getElementById("id")
  HDoc.parentWindow.scrollTo 0, Elm.offsetTop
End sub


Как видно за позицию элемента в документе отвечает - offsetTop.

С уважением Андрей.
Хороший :D, плохой :x, злой :twisted:.

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

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

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.02.2006 (Пт) 19:24

Крост
Да, твой способ лучше, если он подходит для DHTMLEdit (я все таки не знаю что это такое).
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 17.02.2006 (Пт) 20:16

FAKK2 писал(а):Крост
Да, твой способ лучше, если он подходит для DHTMLEdit (я все таки не знаю что это такое).


DHTMLEDit - это контрол. Позволяет просматривать и редактировать страницы.
Небольшие коррективы в коде:
Код: Выделить всё
Public Function GotoLabel(Label As String) As Boolean
Dim Elm As IHTMLElement
Dim HDoc As IHTMLDocument3

If Label = "" Then Exit Function

Set HDoc = Me.DHTMLEdit1.DOM
If HDoc Is Nothing Then Exit Function

Set Elm = HDoc.getElementById(Label)

If Elm Is Nothing Then Exit Function

DHTMLEdit1.DOM.parentWindow.scrollTo _
    Elm.offsetLeft, Elm.offsetTop
GotoLabel = True

End Function


Всё работает.

Serge Gavrilov
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 26.01.2006 (Чт) 11:35

А как выделить текст этой метки

Сообщение Serge Gavrilov » 19.02.2006 (Вс) 18:42

Alexanbar писал(а):...
Всё работает.

А как выделить текст этой метки?

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.02.2006 (Вс) 23:02

В моём случае у метки никакого текста нет. Можно предложить выделять не текст в DHTMLEDit, а, например, ставить точку вблизи его границы типа того, что ставит VB6 в качестве точек останова.

Serge Gavrilov
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 26.01.2006 (Чт) 11:35

Сообщение Serge Gavrilov » 19.02.2006 (Вс) 23:45

А мне надо имено выделить текст метки, и, кроме как, нахождения узла, определения текста его дочернего текстового узла и последующего поиска этого текста, с проверкой найденного на соответствие Parent node искомой метке, я ничего не придумал.
Я использую MSHTML.


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

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

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

    TopList