| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Скрыть все элементы WebBrowser |
| Автор: I_Am_Rock 27.8.2009, 17:51 | ||||
| Всем привет. Такой вопрос. Получаю веб-страницу в WebBrowser. Нужно скрыть (просто чтоб они не были видны) все элементы, кроме одной картинки (в теге img). Есть же, например,
Я знаю, что есть disabled которая делает неактивным
а вот мне нужно, чтобы прятало. Скачать картинку на винт не предлагать. Нужно именно так. Причем еще важно, чтобы скрывающиеся элементы существовали - чтобы в текстовое поле можно было ввести текст (как я показал выше - со словом "znachenie") и чтобы кнопка нажималась (опять же программно). |
| Автор: neic 27.8.2009, 20:42 | ||
P.s. Я люблю Гугл |
| Автор: Naghual 28.8.2009, 12:21 |
| На мой взгляд, правильнее будет не скрывать все ненужное, а изначально, загружать только нужное. |
| Автор: I_Am_Rock 28.8.2009, 13:27 |
| neic Спасибо, это работает. Но я так подумал - мне получается проще все сразу скрыть, а потом открыть только img. Как присвоить всем объектам Style.visibility = "hidden" ? И как потом отобразить картинку - вместо хидден ставить visible? И второй вопрос. Объекты скрываются, но img остается на своем месте. А нужно ее переместить в левый верхний угол. Т.е. я хочу, чтобы пользователь видел только картинку, а остальные объекты, хоть и существовали (чтобы можно было, например, программно нажимать на кнопку), но были не видны. Буду очень признателен. Naghual Картинка генерится каждый раз новая (капча). К тому же, вы предлагаете загружать только картинку,а мне же нужно потом и на кнопки жать, пусть и программно, но нажимать. |
| Автор: I_Am_Rock 28.8.2009, 15:29 | ||||||||
| Я поюзал поиск и частично нашел ответы на свой вопрос Если вместо visibility = "hidden" использовать display = "none", то объект не только исчезает, но и уступает место. Вобщем, как и надо. Таким образом, остается второй вопрос. Как применить скрытие (через display = "none") ко всему, что есть внутри body. Пробую так
Не получается. Хотя если сделать так со сохраненной страницей (добавить через правку html такое свойство к тегу боди), то все норм. з.ы. Я гуглю. И гуглю много. Добавлено @ 15:41
Ну, как же не упоминал...
Я думал об этом, но капча генерируется вот так <img src="captcha.php" width=140 height=60> Как ее можно получить? з.ы. Еще и с инетом какие-то проблемы. ((( |
| Автор: DrBoom 28.8.2009, 16:51 | ||||
I_Am_Rock, проще будет не искать элементы по ID'ам и Nam'ам, а пройтись по коллекции all:
ЗЫ. Собственно это всё, что Вам нужно А ещё лучше:
|
| Автор: I_Am_Rock 28.8.2009, 17:26 | ||
| DrBoom Спасибо! Только я никак не пойму как сделать эту проверку Че-то никак не получается...(( Пробовал Tag.Src = "адрес" И скажите - смогу ли работать со скрытыми таким образом объектами? Например, нажимать, вводить текст. Добавлено через 5 минут и 35 секунд Щас попробую Добавлено через 11 минут и 6 секунд Эх не выходит. У картинки нет нейма и айди. Но зато это единственная картинка. Можно искать по тегу img и можно искать по src, только я не соображу как. Не подскажите? <img src="captchalite.php" width=140 height=60> Добавлено через 14 минут и 22 секунды Сейчас посмотрел - у кнопки button тоже нет айди и нейма, так что буду Вам благодарен если подскажите, как именно по тегам искать (кнопка тоже одна). И пробую так
Не получается - пишет ошибку. |
| Автор: I_Am_Rock 28.8.2009, 18:17 | ||
Сейчас попробовал поискать картинку так
Ошибки не возникает - может находит? Но картинки не отображается((( Я тут подумал - может это из-за того, что скрыт тег body - может быть из-за этого? |
| Автор: DrBoom 28.8.2009, 18:55 | ||||||||||||
Да, конечно... Тэг то не удаляется, он только "скрывается".
Да, так оно и будет, т.к. all содержит все тэги без исключений. Добавьте после обхода по all:
Добавлено @ 19:03
Название тэга получить можно в свойстве tagname |
| Автор: I_Am_Rock 28.8.2009, 20:20 | ||
Вот, попробовал так - все равно всё исчезает (((
Я подумал - может нужно "показать" не только body, но и html, div или еще что-то? |
| Автор: DrBoom 29.8.2009, 10:33 |
| Хм... I_Am_Rock, верно, нужно показать все родительские элементы для этой картинки Добавлено через 3 минуты и 49 секунд ЗЫ. Тогда и цикл не нужен, прячем html (это нулевой, как правило, элемент в коллекции all), а после картинку "отправляем" за html этот. |
| Автор: I_Am_Rock 29.8.2009, 13:45 |
| Вот так да. Я примерно представляю, как ими можно изменять элементы, например, очищать. А чтобы переносить... А разве тогда не будет второй запрос? Если, например, я перенесу - он не сгенерирует новую картинку? |
| Автор: DrBoom 29.8.2009, 15:36 | ||||||
2 I_Am_Rock
Может и не сработает, если картинка кэшируется. Однако если даже второй запрос будет, если php-скрипт "нормально" работает, то от этого может и ничего страшного не случится. Добавлено @ 15:37 Как еще один вариант могу Вам предложить следующее попробовать:
ЗЫ. DOM в HTML интересная вещь, пробуйте, экспериментируйте и импровизируйте |
| Автор: I_Am_Rock 29.8.2009, 16:21 | ||||
| Вы, наверно, опечатку сделали - там нужно не block, а none - чтоб спрятать... Не получается. Выдает ошибку на последней строчке перед End With ("Application-defined or object-defined error") Вот весь код процедуры
Я проверял, ставя перед этой строчкой такие строки
Судя по тому, что мне показывалось - все должно нормально склеиваться.((( |
| Автор: DrBoom 29.8.2009, 18:42 | ||
А что, если поставить On Error Resume Next
Да, спасибо. |
| Автор: I_Am_Rock 29.8.2009, 19:27 | ||
Не, не помогло ((( Просто ничего не отображается. |
| Автор: DrBoom 30.8.2009, 11:50 |
| I_Am_Rock, чтобы не гадать на кофейной гуще, что и как у Вас и что и как Вам нужно, привожу пример на основе форума Винграда. Пример оставляет только нужную картинку (кстати, индекс её каждый раз меняется) с парочкой добавленных своих тэгов. Пример в аттаче. Добавлено через 1 минуту и 26 секунд Я повторю, что прежде чем пытаться "решить" поставленную задачу, Вам следует проанализировать документ и уже в зависимости от структуры документа и его DOM строить способы решения задачи. Экспериментируйте и импровизируйте. |
| Автор: I_Am_Rock 30.8.2009, 12:55 |
| Адаптировал к своему случаю. Получилось, только картинка новая показывается. Поэтому не подходит. Я подумал, что можно просто по очереди спрятать все элементы, кроме картинки. Страничка простая - элементов мало. Т.е. ищу кнопочку, прячу, ищу кнопку выбора файла, прячу. Но в связи с этим у меня вопрос. Как можно "схватить" обычный текст? Который не одет в теги. Добавлено через 4 минуты и 36 секунд Большое спасибо за то, что пытаетесь мне помочь. Я очень это ценю. |
| Автор: DrBoom 30.8.2009, 14:06 | ||||
Для этого есть свойство innerTEXT... пользоваться этим свойством можно тж как и innerHTML\outerHTML
А вы попробуйте, может подойдёт. Я так понял, Вы делаете свою форму для ввода капчи. Может сервер правильно определит, что вы вводите |
| Автор: I_Am_Rock 30.8.2009, 18:03 | ||||
Нет, не подошло. Я потом делаю WebBrowser1.Document.Forms(0).submit и если до этого я не далал ничего, то одно, а если сделал по-вашему, то не работает, т.е. не определяет, что типа форма есть.
Не получается. Причем, я уже встречался с этим, но как поймать - не пойму. Вот, допустим, такой код
Как поймать слово Текст? |
| Автор: I_Am_Rock 30.8.2009, 18:19 |
| Я, кстати, обратил внимание - закрывающего тега body в странице нет! Может, из-за этого не получалось? |
| Автор: DrBoom 30.8.2009, 18:27 |
| I_Am_Rock, а строковые функции такие, как InStr$, Mis$ и остальные, на что? Получаем текст с помощью innerTEXT из нашего body, и начинаем колдовать со строками. Ну значит задача куда сложнее, однако "инструменты", нужные функции\объекты, которые Вам могут помочь уже перечислены. Да, возможно, придётся поломать голову, но конкретного примера к Вашей задаче я привести не могу, т.к. все документы строятся по-разному, с разной структурой и поведением работы. Ковыряйте DOM-документа и пользуйтесь практически всеми его возможностями, которые представлены в объекте document. TextRange, свойства innerHTML и подобные, стили, коллекции объектов тэгов и прочее. ЗЫ. Я верю в Вас |
| Автор: I_Am_Rock 30.8.2009, 19:16 |
| Большое спасибо, буду пробовать. Если получится - отпишу здесь. Если не получится - тоже. У Вас нет ссылок к документации по DOM? Где есть побольше про innerHTML. Я гуглил, но то, что находил, написано как-то разрозненно... |
| Автор: Akina 31.8.2009, 08:13 | ||
http://search.microsoft.com/results.aspx?mkt=ru-RU&setlang=ru-RU&q=innerHTML Уточняй запрос... |
| Автор: neic 3.9.2009, 07:54 |
| Есть аддон специально для IE, называется IE Spy. Разработана челом с улицвб.ру Если найдёшь её, все проблемы отпадут. Добавлено через 1 минуту и 49 секунд Вот нашёл на винче у себя. Добавлено через 2 минуты и 57 секунд Этот аддон позволяет узнать ID любого объекта. Просто переключаешься в режим шпиона и выбираешь нужный элемент. |
| Автор: DrBoom 3.9.2009, 19:14 |
| neic, ИМХО, лучше тогда воспользоваться IE8, нажав кнопку F12 |
| Автор: neic 3.9.2009, 23:09 |
| DrBoom, IE8 не пользуюсь, так что про функционал его не знаю (кроме основного). Также у автора темы может не быть IE8...да-да его конечно же можно скачать и установить. |