WebBrowser, ссылка на объект

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

WebBrowser, ссылка на объект

Сообщение Source » 23.04.2008 (Ср) 3:21

Из статьи "Использование WebBrowser в программах на VisualBasic" взял пример отлова клика на кнопке input type="button". Мне интересно, если я укажу input type="button" name='btnBack' ID='123' с каким идентификатором будет связана кнопка - name или ID?Почему-то всё оказывается связано с ID, а если мне надо записать некое число, пихать его в name? Атрибут name должен быть уникален для каждой кнопки?

Ещё к тому же несколько кнопок, динамически добавляемых в HTML, как клик на каждой отлавливать, не представляю... Да ещё надо индекс связанного массива данных с кнопкой передавать через ID или же name :(...
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение Antonariy » 23.04.2008 (Ср) 5:53

Идентификатор - id, name - название поля, передающегося через форму, это свойство есть только у элементов редактирования, таких как input, select, textarea. Свойство name может быть не уникальным. Произвольные значения можно запихнуть в коллекцию attributes. Динамически добавляемые элементы становятся доступны в dom сразу после создания, точно таким же образом, как и остальные.
Лучший способ понять что-то самому — объяснить это другому.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 23.04.2008 (Ср) 7:57

ну так name для чего служит?
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.04.2008 (Ср) 8:04

Это свойство используется, как имя параметров в формах.
Lasciate ogni speranza, voi ch'entrate.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 23.04.2008 (Ср) 9:02

если ID у всех кнопок одинаков, создаётся массив кнопок? Или если name одинаков? Как вообще работать с динамически добавляемыми кнопками?
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение Antonariy » 23.04.2008 (Ср) 9:45

ID - идентификатор, сам смысл этого слова говорит о том, что его значение уникально. Если ты укажешь один и тот же идентификатор у нескольких элементов, DOM будет считать, что элемент с этим идентификатором - первый из них. Остальные без идентификатора. Один и тот же name может быть у разных элементов, их все можно получить через document.getElementsByName.
Как вообще работать с динамически добавляемыми кнопками?
Если ты их добавляешь через dom, то Set x = document.createElement("input")
Если как html-текст, то лучше всего снабжать идентификатором либо интересующие элементы, если их не много, либо контейнер, в котором они все находятся. В первом случае document.getElementById вернет саму кнопку, во втором случае - контейнер, кнопки ищутся относительно него в childNodes.

Тебе будет проще воспользоваться методом с getElementsByName.
Лучший способ понять что-то самому — объяснить это другому.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 23.04.2008 (Ср) 14:17

Я формирую кнопки через HTML,
но событие WithEvents связано с ID! Т.е. я пишу:
Public WithEvents btn1 As HTMLButtonElement
т.е. у меня ID=btn1 жёстко прописано, значит, если я ставлю уникальный ID каждой кнопке и одинаковое name, то у меня нет события Private Function <уникальный ID>_onclick() As Boolean и я не могу отловить клик на коткретной кнопке!
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение dr.MIG » 23.04.2008 (Ср) 20:35

Кстати, там точно оправдан отлов событий каждой кнопки в отдельности? Просто, как заметил Antonariy в комментарии к моей статье, можно в событии onClick объекта HTMLDocument проверять какая кнопка нажата.
Salus populi suprema lex

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 23.04.2008 (Ср) 20:53

по ID что-ль? Так само событие onClick проблема реализовать. Сейчас гляну статью.
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение dr.MIG » 23.04.2008 (Ср) 21:14

Ну да, проверять по какому элементу произведен щелчок по его ID.
Salus populi suprema lex

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 23.04.2008 (Ср) 23:02

почему не получается установить ссылку на кнопку:
Private WithEvents btn1 As HTMLButtonElement
Set btn1 = WB.document.getElementsById(StrID)
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение Antonariy » 24.04.2008 (Чт) 11:02

Чему равно StrID? Есть ли оно в html?
Лучший способ понять что-то самому — объяснить это другому.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.04.2008 (Чт) 12:07

getElementsById

Если такой метод и есть (проверять мне этот факт лень), то он вернет коллекцию элементов, которую бессмысленно объявлять с withevents.

Если такого метода нет, будет ошибка.

В любом случае логически правильно тут использовать getElementById.
I don't understand. Sorry.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 24.04.2008 (Чт) 16:27

если такой метод getElementsById(ID) и есть, то что он может вернуть? Ведь ID уникален и тогда может быть возвращён указатель на 1 объект. Ну и если в Google набрать getElementsById и getElementById, то разница весьма ощутима... А взято сиё чудо было из статьи Использование WebBrowser в программах на VisualBasic дорогого dr.MIG :wink:

Многоуважаемый Antonariy, а что ж вы не сказали про
Нужную кнопку можно получить в document_onclick из document.parentWindow.event.srcElement
? Али вы растерялись? :wink:
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение dr.MIG » 24.04.2008 (Чт) 20:03

Досадная опечатка. Спасибо большое, что нашел её -- как доберусь до своего компа -- исправлю.
Относительно того, что Antonariy не сказал... Здесь это сказал я -- зачем же повторяться? А он это сказал в комментах к статье.
Salus populi suprema lex

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 25.04.2008 (Пт) 3:06

оно и понятно, но Antonariy не сказал раньше тебя, когда я ломал голову :(
Буря мглою небо кроет, вихри снежные крутя, то как зверь с VB завоешь, то заплачешь, как дитя...

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

Сообщение Antonariy » 25.04.2008 (Пт) 10:32

Во-первых зациклился на Public WithEvents btn1, во-вторых просто забыл.
MSHTML очень избыточная библиотека, достичь почти любых целей можно несколькими способами.
Лучший способ понять что-то самому — объяснить это другому.


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

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

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

    TopList