Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрыть все элементы WebBrowser 
:(
    Опции темы
I_Am_Rock
Дата 27.8.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Всем привет.

Такой вопрос. Получаю веб-страницу в WebBrowser. Нужно скрыть (просто чтоб они не были видны) все элементы, кроме одной картинки (в теге img).

Есть же, например,
Код

WebBrowser1.Document.getElementById("xxx").Value = "znachenie"


Я знаю, что есть disabled которая делает неактивным
Код

WebBrowser1.Document.getElementById("xxx").disabled = True


а вот мне нужно, чтобы прятало.

Скачать картинку на винт не предлагать. Нужно именно так.
Причем еще важно, чтобы скрывающиеся элементы существовали - чтобы в текстовое поле можно было ввести текст (как я показал выше - со словом "znachenie") и чтобы кнопка нажималась (опять же программно).
PM MAIL WWW   Вверх
neic
Дата 27.8.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Код

Ie.Document.getElementById("xxx").Style.visibility = "hidden"


P.s. Я люблю Гугл smile 
PM MAIL WWW ICQ Skype   Вверх
Naghual
Дата 28.8.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



На мой взгляд, правильнее будет не скрывать все ненужное, а изначально, загружать только нужное.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
I_Am_Rock
Дата 28.8.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



neic
Спасибо, это работает. Но я так подумал - мне получается проще все сразу скрыть, а потом открыть только img. Как присвоить всем объектам Style.visibility = "hidden" ? И как потом отобразить картинку - вместо хидден ставить visible?
И второй вопрос. Объекты скрываются, но img остается на своем месте. А нужно ее переместить в левый верхний угол. Т.е. я хочу, чтобы пользователь видел только картинку, а остальные объекты, хоть и существовали (чтобы можно было, например, программно нажимать на кнопку), но были не видны. 
Буду очень признателен.  smile 

Naghual
Картинка генерится каждый раз новая (капча). К тому же, вы предлагаете загружать только картинку,а мне же нужно потом и на кнопки жать, пусть и программно, но нажимать.

Это сообщение отредактировал(а) I_Am_Rock - 28.8.2009, 13:36
PM MAIL WWW   Вверх
Naghual
Дата 28.8.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата(I_Am_Rock @  28.8.2009,  13:27 Найти цитируемый пост)
а мне же нужно потом и на кнопки жать, пусть и программно, но нажимать.

Ну Вы же об этом не упоминали прежде.   Вы уж впредь вопросы задавайте полностью.

Добавлено через 1 минуту и 33 секунды
Цитата(I_Am_Rock @  28.8.2009,  13:27 Найти цитируемый пост)
Объекты скрываются, но img остается на своем месте. А нужно ее переместить в левый верхний угол. Т.е. я хочу, чтобы пользователь видел только картинку, а остальные объекты, хоть и существовали (чтобы можно было, например, программно нажимать на кнопку), но были не видны. 
Буду очень признателен.

Страницу загружаешь в скрытом WebBrowser, с нее получаешь Капчу и выводишь ее в PictureBox на форме.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
I_Am_Rock
Дата 28.8.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Я поюзал поиск и частично нашел ответы на свой вопрос
Если вместо visibility = "hidden" использовать display = "none", то объект не только исчезает, но и уступает место. Вобщем, как и надо.

Таким образом, остается второй вопрос. Как применить скрытие (через display = "none") ко всему, что есть внутри body.
Пробую так
Код

WebBrowser1.Document.getElementsByTagName("body").Style.display = "none"

Не получается. Хотя если сделать так со сохраненной страницей (добавить через правку html такое свойство к тегу боди), то все норм.

з.ы. Я гуглю. И гуглю много.  smile   smile

Добавлено @ 15:41
Цитата(Naghual @  28.8.2009,  13:41 Найти цитируемый пост)
Ну Вы же об этом не упоминали прежде.   Вы уж впредь вопросы задавайте полностью.

Ну, как же не упоминал...  smile 
Цитата(I_Am_Rock @  27.8.2009,  17:51 Найти цитируемый пост)
Причем еще важно, чтобы скрывающиеся элементы существовали ... и чтобы кнопка нажималась (опять же программно).


Цитата(Naghual @  28.8.2009,  13:41 Найти цитируемый пост)
Страницу загружаешь в скрытом WebBrowser, с нее получаешь Капчу и выводишь ее в PictureBox на форме.

Я думал об этом, но капча генерируется вот так
<img src="captcha.php" width=140 height=60>
Как ее можно получить?

з.ы. Еще и с инетом какие-то проблемы. (((

Это сообщение отредактировал(а) I_Am_Rock - 28.8.2009, 15:42
PM MAIL WWW   Вверх
DrBoom
Дата 28.8.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



I_Am_Rock, проще будет не искать элементы по ID'ам и Nam'ам, а пройтись по коллекции all:
Код

Dim Tag As Variant
For Each Tag In WebBrowser1.Document.all
 If [проверка картинка ли у нас или не нужный элемент, например, при помощи name элемента или свойства src] Then
    Tag.style.dispaly="none"
 End If
Next


ЗЫ. Собственно это всё, что Вам нужно smile 

А ещё лучше:
Код

Dim Tag As Variant
For Each Tag In WebBrowser1.Document.all
    Tag.style.dispaly="none"
Next
[Картика].style.dispaly="block" ' Если есть у неё ID и\или Name


Это сообщение отредактировал(а) DrBoom - 28.8.2009, 17:18
PM MAIL ICQ Jabber   Вверх
I_Am_Rock
Дата 28.8.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



DrBoom 
Спасибо! Только я никак не пойму как сделать эту проверку   smile 
Че-то никак не получается...(( Пробовал Tag.Src = "адрес"

И скажите - смогу ли работать со скрытыми таким образом объектами? Например, нажимать, вводить текст.

Добавлено через 5 минут и 35 секунд
Цитата(DrBoom @  28.8.2009,  16:51 Найти цитируемый пост)
А ещё лучше:

Щас попробую smile

Добавлено через 11 минут и 6 секунд
Эх не выходит. У картинки нет нейма и айди. 

Но зато это единственная картинка. Можно искать по тегу img и можно искать по src, только я не соображу как. Не подскажите? smile

<img src="captchalite.php" width=140 height=60>

Добавлено через 14 минут и 22 секунды
Сейчас посмотрел - у кнопки button тоже нет айди и нейма, так что буду Вам благодарен если подскажите, как именно по тегам искать (кнопка тоже одна).
И пробую так
Код

WebBrowser1.Document.getElementsByTagName("img").Style.display = "block"

Не получается - пишет ошибку.

Это сообщение отредактировал(а) I_Am_Rock - 28.8.2009, 17:27
PM MAIL WWW   Вверх
I_Am_Rock
Дата 28.8.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15





Сейчас попробовал поискать картинку так
Код

 For i = 0 To WebBrowser1.Document.images.length - 1
 WebBrowser1.Document.images(i).Style.display = "block"
 Next i

Ошибки не возникает - может находит?

Но картинки не отображается(((

Я тут подумал - может это из-за того, что скрыт тег body - может быть из-за этого?
PM MAIL WWW   Вверх
DrBoom
Дата 28.8.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Цитата(I_Am_Rock @  28.8.2009,  17:26 Найти цитируемый пост)
И скажите - смогу ли работать со скрытыми таким образом объектами? Например, нажимать, вводить текст.

Да, конечно... Тэг то не удаляется, он только "скрывается".


Цитата(I_Am_Rock @  28.8.2009,  18:17 Найти цитируемый пост)
Я тут подумал - может это из-за того, что скрыт тег body - может быть из-за этого? 

Да, так оно и будет, т.к. all содержит все тэги без исключений. Добавьте после обхода по all:
Код

 WebBrowser1.Document.body.style.display="block"


Добавлено @ 19:03
Цитата(I_Am_Rock @  28.8.2009,  17:26 Найти цитируемый пост)
Код

WebBrowser1.Document.getElementsByTagName("img").Style.display = "block"


Не получается - пишет ошибку.
 Конечно, не удивительно, т.к. имя тега (свойство name) -- это та строка, которая задана в атрибуте тега name:
Код

<img name="имя">


 Название тэга получить можно в свойстве tagname smile 


Это сообщение отредактировал(а) DrBoom - 28.8.2009, 19:06
PM MAIL ICQ Jabber   Вверх
I_Am_Rock
Дата 28.8.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Вот, попробовал так - все равно всё исчезает (((

Код

Dim Tag As Variant
For Each Tag In WebBrowser1.Document.All
 If Tag.TagName <> "img" Then
    Tag.Style.display = "none"
 End If
Next
WebBrowser1.Document.body.Style.display = "block"


Я подумал - может нужно "показать" не только body, но и html, div или еще что-то? 
PM MAIL WWW   Вверх
DrBoom
Дата 29.8.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Хм... I_Am_Rock, верно, нужно показать все родительские элементы для этой картинки smile  Какой ужас smile  Однако всё это дело можно и "обойти", если с помощью свойств innerHTML и oterHTML вы перенесёте картинку за пределы тэга html smile

Добавлено через 3 минуты и 49 секунд
ЗЫ. Тогда и цикл не нужен, прячем html (это нулевой, как правило, элемент в коллекции all), а после картинку "отправляем" за html этот. 

Это сообщение отредактировал(а) DrBoom - 29.8.2009, 10:34
PM MAIL ICQ Jabber   Вверх
I_Am_Rock
Дата 29.8.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Вот так да. Я примерно представляю, как ими можно изменять элементы, например, очищать.
А чтобы переносить... 
 smile 

А разве тогда не будет второй запрос? Если, например, я перенесу - он не сгенерирует новую картинку?
PM MAIL WWW   Вверх
DrBoom
Дата 29.8.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



2 I_Am_Rock

Код

Dim buf As String
With WebBrowser1.Document
  .body.style.display = "block" ' прячем тело c глаз долой
   buf=[картинка].outerHTML  ' помешаем в буфер текстовое представление тэга
  .body.outerHTML=.body.outerHTML+buf ' помещаем "копию" тэга за пределами тэга body
End WIth


Цитата(I_Am_Rock @  29.8.2009,  13:45 Найти цитируемый пост)
А разве тогда не будет второй запрос? Если, например, я перенесу - он не сгенерирует новую картинку? 

Может и не сработает, если картинка кэшируется. Однако если даже второй запрос будет, если php-скрипт "нормально" работает, то от этого может и ничего страшного не случится.

Добавлено @ 15:37
Как еще один вариант могу Вам предложить следующее попробовать:
Код

WebBrowser1.Document.body.outerHTML=[картинка].outerHTML+[нужные элементы].outerHTML

ЗЫ. DOM в HTML интересная вещь, пробуйте, экспериментируйте и импровизируйте smile 

Это сообщение отредактировал(а) DrBoom - 29.8.2009, 15:40
PM MAIL ICQ Jabber   Вверх
I_Am_Rock
Дата 29.8.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Вы, наверно, опечатку сделали - там нужно не block, а none - чтоб спрятать...

Не получается. Выдает ошибку на последней строчке перед End With ("Application-defined or object-defined error")
Вот весь код процедуры

Код

Dim asd As Object
Dim buf As String

For i = 0 To WebBrowser1.Document.images.length - 1
  Set asd = WebBrowser1.Document.images(i) ' находим единственную картинку
Next i

With WebBrowser1.Document
  .body.style.display = "none" ' прячем тело c глаз долой
   buf = asd.outerHTML ' помешаем в буфер текстовое представление тэга
  .body.outerHTML=.body.outerHTML+buf ' помещаем "копию" тэга за пределами тэга body
End With


Я проверял, ставя перед этой строчкой такие строки

Код

   MsgBox .body.outerHTML
   MsgBox buf
   MsgBox .body.outerHTML + buf


Судя по тому, что мне показывалось - все должно нормально склеиваться.(((

Это сообщение отредактировал(а) I_Am_Rock - 29.8.2009, 18:23
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.