Перейти к основному содержимому

ЭлементHtml

Стд::ДокументHtml::ЭлементHtml Доступность: Сервер

Объект для основных элементов html, содержащий имя тэга, атрибуты и дочерние узлы (включая например текстовые узлы). Дочерние узлы могут содержать либо элементы, либо терминальные узлы.

Сравнение ссылочное

Иерархия типа

Базовые типы: Объект, Стд::ДокументHtml::УзелHtml


Конструкторы

ЭлементHtml

Доступность: Сервер

ЭлементHtml(Тег: Строка)
Создает элемент html с тегом, не привязан к родительским элементам, то есть родитель и документ владелец будет равен Неопределено.

Исключения

ИсключениеНедопустимыйАргумент - если переданная строка не является тегом (не удовлетворяет требованиям стандарта html).

Примеры

пер ЯчейкаЗаголовка = новый ЭлементHtml("th")
пер Текст = новый ТекстовыйУзелHtml("Заголовок", Ложь)
ЯчейкаЗаголовка.ДобавитьКопииВКонецДочерних(Текст)

Свойства

Атрибуты

Доступность: Сервер ТолькоЧтение

Атрибуты: АтрибутыHtml

Атрибуты элемента.

Примеры

метод КоллекцияАтрибутовЭлементаHtml(Элемент: ЭлементHtml)
// Дано Элемент.ВнутреннийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
пер Результат = ""
для Атрибут из Элемент.Атрибуты
Результат += Атрибут.Имя + " : " + Атрибут.Значение + ""
;
// Результат будет равен
// id : app-switcher
// class : aui-dropdown2 aui-style-default
// role : menu
;

АтрибутыData

Доступность: Сервер ТолькоЧтение

Data атрибуты (для html 5).

Примеры

// Для элемента с кодом: <div data-package="myPackage" data-language="xbsl" class="group">
// Элемент.АтрибутыData будут равны {"package": "myPackage", "language": "xbsl"}

ВесьТекст

Доступность: Сервер ТолькоЧтение

ВесьТекст: Строка

Ненормализованный текст, который скомбинирован с собственным текстом элемента и текстом его дочерних.

  • Закодированный текст- это текст, в котором заменены спец символы (например "<" на "<")
  • Нормализованный текст- это текст, в котором все пробельные символы (перенос строки, символы табуляции) заменены одним пробелом. Несколько идущих подряд пробелов заменены одним пробелом. То есть это текст, который увидит пользователь при отображении этого html

Примеры

метод НенормализованныйТекстСкомбинированныйССобственнымТекстом(Парсер: РазборHtml)
пер Документ = Парсер.Разобрать(
"<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
"<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
.Документ
// Тогда Документ.Тело.ВесьТекст:
// "Мы пришлем Вам доступ в течении дня. Ожидайте.
// Если вдруг по каким-то причинам вы не получили ключ..."
;

Ид

Доступность: Сервер

Значение атрибута id, или Неопределено, если не установлено.


Имя

Доступность: Сервер ТолькоЧтение

Имя: Строка

Нормализованное имя тега элемента (всегда в lowercase, вне зависимости от исходного кода).

Примеры

метод НормализованноеИмя(Элемент: ЭлементHtml)
если Элемент.Имя == "span"
// заменяем узел на div
;
;

Классы

Доступность: Сервер

Классы данного элемента (значения для атрибута class)

Примеры

метод КлассыЭлемента(Элемент: ЭлементHtml)
// Дано Элемент.ВнутреннийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
пер Классы = Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.ДобавитьКласс("colorized")
Классы = Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default", "colorized"
;

НормализованныйТекст

Доступность: Сервер ТолькоЧтение

НормализованныйТекст: Строка

Нормализованный текст, который скомбинирован с собственным текстом элемента и текстом его дочерних.

  • Закодированный текст- это текст, в котором заменены спец символы (например "<" на "<")
  • Нормализованный текст- это текст, в котором все пробельные символы (перенос строки, символы табуляции) заменены одним пробелом. Несколько идущих подряд пробелов заменены одним пробелом. То есть это текст, который увидит пользователь при отображении этого html

Примеры

метод НормализованныйТекстСкомбинированныйССобственнымТекстом(Парсер: РазборHtml)
пер Документ = Парсер.Разобрать(
"<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
"<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
.Документ
// Тогда Документ.Тело.НормализованныйТекст:
// "Мы пришлем Вам доступ в течении дня. Ожидайте. Если вдруг по каким-то причинам вы не получили ключ..."
;

ПредыдущийСоседнийЭлемент

Доступность: Сервер ТолькоЧтение

ПредыдущийСоседнийЭлемент: ЭлементHtml?

Предыдущий прямой соседний элемент, Неопределено, если такого нет или родителя у текущего элемента не существует

Примеры

метод ПредыдущийПрямойСоседнийЭлемент(Документ: ДокументHtml)
/* Пример части кода:
<label for="1">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian">
*/
// Для пользовательского ввода данных радио кнопок задать class = Radio, а их лейблам class = Label

пер РадиоКнопки = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("input", "type", "radio")
РадиоКнопки.ДобавитьКласс("Radio")

для Кнопка из РадиоКнопки
пер Лейбл = РадиоКнопки.ПолучитьПредыдущихПрямыхСоседей().ЕдинственныйИлиНеопределено()
если Лейбл != Неопределено
Лейбл.Атрибуты.Вставить("class", "Label")
;
;

/* Пример части результата:
<label for="1" class="Label">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian" class="Radio">
*/
;

СледующийСоседнийЭлемент

Доступность: Сервер ТолькоЧтение

СледующийСоседнийЭлемент: ЭлементHtml?

Следующий прямой соседний элемент, Неопределено, если такого нет или родителя у текущего элемента не существует

Примеры

метод СледующийПрямойСоседнийЭлемент(Документ: ДокументHtml)
/* Пример части кода:
<label for="1">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian">
*/
// Для пользовательского ввода данных радио кнопок задать class = Radio, а их лейблам class = Label

пер Лейблы = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("label", "for", "")
Лейблы.УстановитьАтрибут("class", "Label")

для Кнопка из Лейблы
пер РадиоКнопка = Лейблы.ПолучитьСледующихПрямыхСоседей().ЕдинственныйИлиНеопределено()
если РадиоКнопка != Неопределено
РадиоКнопка.ДобавитьКласс("Radio")
;
;

/* Пример части результата:
<label for="1" class="Label">Russian</label>
<input type="radio" id="1" name="fav_language" value="Russian" class="Radio">
*/
;

СобственныйНормализованныйТекст

Доступность: Сервер ТолькоЧтение

СобственныйНормализованныйТекст: Строка

Нормализованный текст именно этого элемента без учета поддерева дочерних.

  • Закодированный текст- это текст, в котором заменены спец символы (например "<" на "<")
  • Нормализованный текст- это текст, в котором все пробельные символы (перенос строки, символы табуляции) заменены одним пробелом. Несколько идущих подряд пробелов заменены одним пробелом. То есть это текст, который увидит пользователь при отображении этого html

Примеры

метод НормализованныйТекстИменноЭтогоЭлемента(Парсер: РазборHtml)
пер Документ = Парсер.Разобрать(
"<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
"<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
.Документ
// Тогда Документ.Тело.СобственныйНормализованныйТекст = ""
// Но Документ.Тело.ПолучитьДочерниеЭлементы()[0].СобственныйНормализованныйТекст =
// "Мы пришлем Вам доступ в течении дня. Ожидайте."
;

СобственныйТекст

Доступность: Сервер ТолькоЧтение

СобственныйТекст: Строка

Текст именно этого элемента без учета поддерева дочерних.

Примеры

метод ТекстИменногоЭтогоДокументаБезУчетаПоддереваДочерних(Парсер: РазборHtml)
пер Документ = Парсер.Разобрать(
"<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в течении дня. Ожидайте.</p>\n" +
"<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ...</p>")
.Документ
// Тогда Документ.Тело.СобственныйТекст = "\n"
// Но Документ.Тело.ПолучитьДочерниеЭлементы()[0].СобственныйТекст =
// "Мы пришлем Вам доступ в течении дня. Ожидайте."
;

СтандартныйТег

Доступность: Сервер ТолькоЧтение

СтандартныйТег: Булево

Признак того, что тег содержится в стандарте html.


Методы

ВСтроку

Доступность: Сервер

ВСтроку(): Строка
Переопределение: ВСтроку

Возвращает "Имя: Диапазон"


ВнутреннийКод

Доступность: Сервер

ВнутреннийКод(НастройкиЗаписи: НастройкиЗаписиHtml? = Неопределено): Строка
Возвращает внутренний html код.

Примеры

метод ВнутреннийHtmlКод(Документ: ДокументHtml)
/*
Для кода:
<html>
<div id="first">
<div id="second">
<p>Some text</p>
</div>
</div>
</html>
*/

пер ВложенныйDiv = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("div", "id", "second")[0]
пер Настройки = новый НастройкиЗаписиHtml()
Настройки.РазмерОтступов = 1
Настройки.УлучшениеВывода = Истина
пер Код = (ВложенныйDiv.Родитель как ЭлементHtml).ВнутреннийКод(Настройки)
/*
Код будет равен:
<div id="second">
<p>Some text</p>
</div>
*/
;

ДобавитьКласс

Доступность: Сервер

ДобавитьКласс(Класс: Строка)
Добавляет атрибут класса, если его не было на элементе, со значением, иначе добавляет в атрибут class еще одно значение (через пробел). Если такое значение класса уже есть на элементе, то метод не выполняет никаких действий.

Примеры

метод ДобавитьКласс(Элемент: ЭлементHtml)
// Дано Элемент.ВнутреннийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
пер Классы = Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.ДобавитьКласс("colorized")
Классы = Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default", "colorized"
;

ДобавитьКопииВКонецДочерних

Доступность: Сервер

ДобавитьКопииВКонецДочерних(Узлы: УзелHtml|Обходимое<УзелHtml>)
Добавляет копии переданных узлов в конец дочерних.

Примеры

метод СверстатьТаблицу(КолСтрок: Число, КолСтолбцов: Число): ЭлементHtml
пер Таблица = новый ЭлементHtml("table")
пер ЗаголовокТаблицы = новый ЭлементHtml("tr")
для Инд = 0 по КолСтолбцов
пер ЯчейкаЗаголовка = новый ЭлементHtml("th")
пер Текст = новый ТекстовыйУзелHtml("Заголовок " + Инд, Ложь)
ЯчейкаЗаголовка.ДобавитьКопииВКонецДочерних(Текст)
ЗаголовокТаблицы.ДобавитьКопииВКонецДочерних(ЯчейкаЗаголовка)
;

Таблица.ДобавитьКопииВКонецДочерних(ЗаголовокТаблицы)

для СтрокаИнд = 0 по КолСтрок
пер СтрокаТаблицы = новый ЭлементHtml("tr")
для Инд = 0 по КолСтолбцов
пер Ячейка = новый ЭлементHtml("td")
пер Текст = новый ТекстовыйУзелHtml("Ячейка " + СтрокаИнд + ":" + Инд, Ложь)
Ячейка.ДобавитьКопииВКонецДочерних(Текст)
СтрокаТаблицы.ДобавитьКопииВКонецДочерних(Ячейка)
;
Таблица.ДобавитьКопииВКонецДочерних(СтрокаТаблицы)
;
возврат Таблица
;


ДобавитьКопииВНачалоДочерних

Доступность: Сервер

ДобавитьКопииВНачалоДочерних(Узлы: УзелHtml|Обходимое<УзелHtml>)
Добавляет копии переданных узлов в начало дочерних.

Примеры

// Положим в контейнер параграфы, у которых идентификаторы будут возрастать от 1 до 3 

пер Родитель = новый ЭлементHtml("div")
пер Последний = новый ЭлементHtml("p")
Родитель.ДобавитьКопииВНачалоДочерних(Последний)

Последний = Родитель.ПолучитьДочерниеЭлементы()[0]
Последний.Ид = "3"

пер ПараграфыДо = новый ЭлементыHtml([новый ЭлементHtml("p"), новый ЭлементHtml("p")])
ПараграфыДо[0].Ид = "1"
ПараграфыДо[1].Ид = "2"

Родитель.ДобавитьКопииВНачалоДочерних(ПараграфыДо)

/*
Получили код:
<div>
<p id="1"></p>
<p id="2"></p>
<p id="3"></p>
</div>
*/

ПолучитьДочерниеЭлементы

Доступность: Сервер

ПолучитьДочерниеЭлементы(
Поддерево: Булево = Ложь,
Фильтр: ((ЭлементHtml)->Булево)? = Неопределено
): ЭлементыHtml
Получить дочерние узлы, которые являются элементами. Если Поддево == Ложь, то возвращает непосредственных детей для элемента, если Поддерево == Истина, возвращает поддерево для элемента. Если критерий задан, то в элементы добавляются дочерние удовлетворяющие этому критерию.

Примеры

метод ПолучитьДочерниеУзлы(Документ: ДокументHtml)
/*
Для кода:
<html><body>
<!-- Первый контейнер -->
<div id="first">
<!-- Второй контейнер -->
<div id="second">
<p>Some text</p>
</div>
</div>
</body></html>
*/
Документ.Тело.ПолучитьДочерниеЭлементы(Истина) // Вернет все элементы в этом html
Документ.Тело.ПолучитьДочерниеЭлементы() // Вернет коллекцию из одного элемент - <html>

// Вернет коллекцию из двух div
Документ.Тело.ПолучитьДочерниеЭлементы(Истина, Элемент -> Элемент.Ид != Неопределено)
;

ПолучитьИзПоддереваЭлементыПоАтрибуту

Доступность: Сервер

ПолучитьИзПоддереваЭлементыПоАтрибуту(
Тег: Строка,
ИмяАтрибута: Строка,
ЗначениеАтрибута: Образец|Строка|? = Неопределено
): ЭлементыHtml
Получить дочерние элементы из поддерева, которые имеют данный тег, а также установлен указанный атрибут и значение (если указано). При передаче строки будет искаться точное совпадение, при передаче образца- удовлетворение значения указанному образцу. Если идет поиск по атрибуту класса, то в результат попадут элементы, в которых этот класс содержится (то есть не обязательно класс должен быть один для элемента). Если в качестве значения класса передается строка, содержащая пробел, то по нему будут разделены классы и так же элементы будут проверены на принадлежность нескольким классам одновременно, например при поиске "К1 К2" будут возвращены элементы, у которых установлены оба класса (вне зависимости от порядка их объявления в элементе). В иных случаях передача пробела не будет влиять на разделение значений.

Примеры

метод ПолучитьВсеИзображенияИзВложенияПисьма(Документ: ДокументHtml): ЭлементыHtml
// Изображения в письме для отображения из вложений в атрибуте src начинаются с "cid:"
возврат Документ.Тело.ПолучитьИзПоддереваЭлементыПоАтрибуту("img", "src", 'cid:.*')
;

ПолучитьИзПоддереваЭлементыПоТегу

Доступность: Сервер

ПолучитьИзПоддереваЭлементыПоТегу(Тег: Строка): ЭлементыHtml
Получает дочерние элементы из поддерева по тегу. Если тег не удовлетворяет требованиям стандарту или не содержится в дереве, то будет возвращена пустая коллекция.

Примеры

метод ПолучитьВсеИзображения(Документ: ДокументHtml): ЭлементыHtml 
возврат Документ.Тело.ПолучитьИзПоддереваЭлементыПоТегу("img")
;

ПолучитьИзПоддереваЭлементыССобственнымТекстом

Доступность: Сервер

ПолучитьИзПоддереваЭлементыССобственнымТекстом(Текст: Образец|Строка): ЭлементыHtml
  • Закодированный текст- это текст, в котором заменены спец символы (например "<" на "<")
  • Нормализованный текст- это текст, в котором все пробельные символы (перенос строки, символы табуляции) заменены одним пробелом. Несколько идущих подряд пробелов заменены одним пробелом. То есть это текст, который увидит пользователь при отображении этого html

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

Примеры

метод ПолучитьДочерниеЭлементыИзПоддереваВСобственномНормализованномТексте(Парсер: РазборHtml)
пер Документ = Парсер.Разобрать("<p style=\"margin: 0 0 16px;\">Мы пришлем Вам доступ в личный" +
"кабинет в течении дня. Ожидайте.</p>\n" +
"<p style=\"margin: 0 0 16px;\">Если вдруг по каким-то причинам вы не получили ключ доступа - напишите в онлайн" +
"чат на нашем сайте, пожалуйста.</p>")
.Документ

пер Элементы = Документ.Тело.ПолучитьИзПоддереваЭлементыССобственнымТекстом("личный кабинет")
Элементы[0].ВнутреннийКод()
/*
Результат:
<p style="margin: 0 0 16px;">Мы пришлем Вам доступ в личный кабинет в течении дня. Ожидайте.</p>
*/
;

ПолучитьКлассыКакСтроку

Доступность: Сервер

ПолучитьКлассыКакСтроку(): Строка
Получить атрибут класса, как строку (классы будут разделены через пробел).

Примеры

метод ПолучитьАтрибутКлассаКакСтроку(Элемент: ЭлементHtml)
// Дано Элемент.ВнутреннийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
Элемент.ПолучитьКлассыКакСтроку() // будет равен "aui-dropdown2 aui-style-default"
;

ПолучитьПредыдущиеСоседниеЭлементы

Доступность: Сервер

ПолучитьПредыдущиеСоседниеЭлементы(): ЭлементыHtml
Получить элементы на том же уровне, что и текущий, идущие перед элементом.

Примеры

метод ПолучитьЭлементыНаТомЖеУровнеИдущиеПеред(Документ: ДокументHtml)
/*
Код:
<div>
<p id="1">Текст 1</p>
<p id="2">Текст 2</p>
<p id="3">Текст 3</p>
</div>
*/
пер Параграф = Документ.ПолучитьИзПоддереваЭлементыПоАтрибуту("p", "id", "3")[0]

пер ПервыеПараграфы = Параграф.ПолучитьПредыдущиеСоседниеЭлементы()
ПервыеПараграфы.ДобавитьКласс("textElement")
/*
Рузультат, код:
<div>
<p id="1" class="textElement">Текст 1</p>
<p id="2" class="textElement">Текст 2</p>
<p id="3">Текст 3</p>
</div>
*/
;

ПолучитьСледующиеСоседниеЭлементы

Доступность: Сервер

ПолучитьСледующиеСоседниеЭлементы(): ЭлементыHtml
Получить элементы на том же уровне, что и текущий, идущие далее от элемента.

Примеры

метод ПолучитьЭлементыНаТомЖеУровнеИдущиеДалее(Документ: ДокументHtml)
// Есть документ с одной таблицей, в которой установлен заголовок, нужно всем обычным строкам (не заголовку) добавить
// класс tableRaw
пер ЭлементTh = Документ.ПолучитьИзПоддереваЭлементыПоТегу("th")[0] // Ячейка заголовка
пер СтрокаЗаголовка = ЭлементTh.Родитель как ЭлементHtml
пер ОбычныеСтрокиТаблицы = СтрокаЗаголовка.ПолучитьСледующиеСоседниеЭлементы()
ОбычныеСтрокиТаблицы.ДобавитьКласс("tableRaw")
;

Удалить

Доступность: Сервер

Удалить(ВместеСДочерними: Булево)
Удаляет узел и перемещает дочерние узлы к родительскому. Применим, если текущий узел имеет родителя.

Исключения

ИсключениеНедопустимоеСостояние - если текущий узел не имеет родителя.

Примеры

метод УдалитьУзелИПереместитьДочерниеКРодительскому()
НайтиКонтейнерСоСкриптами().Удалить(Истина)
// Удаляет все div, в которых есть скрипты ([УзелДанныхHtml]).
;

метод НайтиКонтейнерСоСкриптами(): ЭлементHtml
возврат новый ЭлементHtml("div")
;

УдалитьДочерниеУзлы

Доступность: Сервер

УдалитьДочерниеУзлы()
Удаляет узел и перемещает дочерние узлы к родительскому. Применим, если текущий узел имеет родителя. Например, не применим для документа.


УдалитьКласс

Доступность: Сервер

УдалитьКласс(Класс: Строка)
Удалить класс по имени.


УстановитьКлассы

Доступность: Сервер

УстановитьКлассы(Классы: ЧитаемоеМножество<Строка>)
Установить атрибут класса по указанному множеству классов, удаляет предыдущее значение.

Примеры

метод УстановитьАтрибутКлассаПоУказанномуМножествуКлассов(Элемент: ЭлементHtml)
// Дано Элемент.ВнутреннийКод() <div id="app-switcher" class="aui-dropdown2 aui-style-default" role="menu"></div>
пер Классы = Элемент.Классы // будет содержать "aui-dropdown2", "aui-style-default"
Элемент.УстановитьКлассы({"colorized", "aui-dropdown2"})
Классы = Элемент.Классы // будет содержать "colorized", "aui-dropdown2"
;

Список унаследованных методов

Объект

ПолучитьТип, Представление

УзелHtml

ВнешнийКод, ВставитьКопииУзловДоТекущего, ВставитьКопииУзловПослеТекущего, ОбойтиВГлубину, Удалить

Список унаследованных свойств

УзелHtml

ДиапазонВКоде, ДокументВладелец, ДочерниеУзлы, ПредыдущийСосед, Родитель, СледующийСосед