На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> IHTMLDocument2 get_all не все элементы , Как получить остальные.
    Получаю коллекцию:
    ExpandedWrap disabled
      //Коллекция элементов документа
          CComPtr <IHTMLElementCollection> pIHTMLElementCollection;
          //Если документ присутвует
          if(pIHTMLDocument2){
              //Если коллекция успешно получена
              if (S_OK == pIHTMLDocument2->get_all (&pIHTMLElementCollection)) {
                  //Указатель
                  CComPtr <IUnknown> pIUnknownEnum;
                  //Получаем список элементов
                  if (S_OK == pIHTMLElementCollection->get__newEnum(&pIUnknownEnum)){
                      //Пронумерованный список элементов
                      CComQIPtr <IEnumVARIANT> pIEnumVARIANT = pIUnknownEnum;
                      //Если получен указатель
                      if(pIEnumVARIANT){
                          //Описываем переменную
                          VARIANT var;
                          //Сбрасываем блок данных
                          pIEnumVARIANT->Reset();
                          //Перебираем все элементы коллекции и получаем базовые данные об элементах
                          while(S_OK == pIEnumVARIANT->Next (1, &var, NULL)){
                              //Если указатель получен
                              if(var.vt == VT_DISPATCH){
                                  //Получаем элемент
                                  CComQIPtr <IHTMLElement> pIHTMLElement = var.pdispVal;
                                  //Если элемент получен
                                  if(pIHTMLElement){
                                      //Элемент верхнего уровня
                                      CComQIPtr <IHTMLElement> pIHTMLParentElement;

    После получения в ней не все элементы которые находятся в браузере.
    ExpandedWrap disabled
      <div class="data"><a href="javascript:void(0)" onclick="setUp(1)"><b class="up"></b>Найдено</a></div>

    Слова "Найдено" в коллекции не существует. Я так понимаю, это происходит потому, что это слово из скрипта. Но в браузере то оно есть.
    Причем, что интересно, если посмотреть исходный код, его тоже там не будет, а вот если посмотреть отладчиком будет.

    Я вообще раньше думал, что IHTMLDocument2 это по сути проекция содержимого страницы, с координатами элементов которые реально отображаются, и т.д., а оказываться нет.
    Вопрос, как можно получить все, что у нас на странице? В том числе данные подгруженные скриптами.

    В Хроме выглядит так:
    Прикреплённая картинка
    Прикреплённая картинка


    Добавлено
    Удалите тему :) Я прогнал... Отображается... Сорри
    Сообщение отредактировано: MaIron -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0491 ]   [ 18 queries used ]   [ Generated: 26.04.24, 08:10 GMT ]