Обращение по индексу к подчинённым элементам в Поле HTML Документа

1. soulner 340 29.02.20 18:34 Сейчас в теме
Коллеги, доброе время суток.
Может кто сталкивался с таким хитрым поведением элемента Поле HTML документа (платформа 8.3.16.1148 и 8.3.15 тоже).
Есть реквизит формы "Браузер" - строка неограниченной длины, есть элемент формы "Браузер" с видом "Поле HTML документа".
Хочу загрузить сайт и получить имя тэга первого подчинённого элемента (это пример для демонстрации), т.е. выполнить:
Сообщить(Элементы.Браузер.Документ.documentElement.childNodes[0].tagName);

Если web-страница получена путём присваивания реквизиту "Браузер" адреса страницы, то будет ошибка, что "tagName" не найден, а если реквизиту "Браузер" присваивается html-код всё будет хорошо и получим тэг "HEAD".
Естественно я пробовал и через Элементы.Браузер.defaultView и перебором в цикле Для Каждого Из... Везде поведение похожее.
Прошу совета у знающих.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Sergitax 01.03.20 21:28 Сейчас в теме
Смотрел на платформе 8.3.15.1869 (32 бита). Оба метода отрабатывают одинаково (присвоение текста страницы и присвоение адреса).
Более того, получить элемент можно и методом:
Элементы.Браузер.Документ.getElementsByTagName("Имя_тэга");

либо:
Элементы.Браузер.Документ.getElementById("Идентификатор");

при наличии идентификатора у него.
Получите сам элемент (типа "Внешний объект").

Я не веб-разработчик, но мы в своих решениях часто работаем с HTML-страницами (как со своими, так и с чужими). Дело это неблагодарное (имею ввиду парсинг страниц).

И второй момент - вы дожидаетесь события "ДокументСформирован()" для поля HTML-страницы?
3. soulner 340 03.03.20 18:10 Сейчас в теме
Спасибо, что откликнулись.
Сразу скажу, что событие "ДокументСформирован()" я жду.
Напишу подробнее:
1.1 процедура загрузки сайта, реквизит "Сайт" - строка, связанная с полем HTML документа
Соединение = Новый HTTPСоединение("ya.ru",,,,,5,Новый ЗащищенноеСоединениеOpenSSL(
	        Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
	        Новый СертификатыУдостоверяющихЦентровWindows));
Запрос = Новый HTTPЗапрос();
ОтветHTTP = Соединение.Получить(Запрос);
Сайт = ОтветHTTP.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);

1.2 в процедуре "СайтДокументСформирован(Элемент)"
Тэг = Элементы.Браузер.Документ.getElementsByTagName("HEAD")[0];
Сообщить(Тэг.tagName);

получаем, как и положено "HEAD"
2.1 процедура загрузки сайта,
Сайт = "ya.ru";

2.2 в процедуре "СайтДокументСформирован(Элемент)" получаем ошибку "Метод объекта не обнаружен (getElementsByTagName)"
Я уже голову сломал.
4. SlavaKron 04.03.20 10:28 Сейчас в теме
Проблема, видимо, в специфике сайта яндекса и WebKit (движок, используемый с 8.3.14 вместо IE). У меня ошибка повторяется на сайте ya.ru, но с google.com и mail.ru, к примеру, всё в порядке.
В случае с ya.ru, у сформированного документа недоступны никакие методы (в отладке они кстати почему-то стали доступны в виде свойств).
В качестве костыля могу посоветовать рекурсивно перебрать подчиненные элементы свойства "children".
Обращение к элементу сделать через строковое представление индекса элемента, например, Элемент.children["0"].
5. soulner 340 04.03.20 20:48 Сейчас в теме
(4)
Обращение к элементу сделать через строковое представление индекса элемента, например, Элемент.children["0"].
- вы меня спасли! Я обращался через числовой индекс. Спасибо!!!
Оставьте свое сообщение
Вакансии
Ведущий разработчик 1С
Москва
зарплата от 200 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 170 000 руб.
Полный день

Аналитик 1С: ERP (оперконтур)
Москва
зарплата от 180 000 руб. до 250 000 руб.
Полный день

Аналитик 1С: УХ
Москва
зарплата от 180 000 руб. до 250 000 руб.
Полный день

Аналитик 1С: ЗУП
Москва
зарплата от 180 000 руб. до 250 000 руб.
Полный день