Имя: Пароль:
1C
 
Позиционирование HTML поля
0 ST_
 
28.03.24
11:05
Здравствуйте. У меня есть поле HTML документа, в котором отображается переписка. Мне необходимо, чтобы при открытии формы было видно последние сообщения (то есть нижнюю часть). Пробовала с помощью powershell-скрипта, почему-то не заработало.

Элементы.ПредпросмотрHTMLБезВложений.ТолькоПросмотр = Ложь;
ЭтаФорма.ТекущийЭлемент = Элементы.ПредпросмотрHTMLБезВложений;
Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("{END}");


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

Документ.parentWindow.clipboardData.SetData("Text", ПредставлениеСсылки); 
Документ.execCommand("Paste");
Область = Документ.body.createTextRange();
Область.findText(ПредставлениеСсылки);
Область.select();	
Документ.execCommand("CreateLink", Ложь, ПредставлениеСсылки);
Документ.getElementsByTagName("a")[0].scrollIntoView(Истина);


Смогла найти только то, что parentWindow надо заменить на DefaultView. Подскажите, пожалуйста, в какую сторону копать? Не могу найти ничего в плане литературы по этому поводу...
1 SerF_2011
 
28.03.24
11:17
2 Garykom
 
28.03.24
11:18
Элементы.ОписаниеHTML.Document.DefaultView.НазваниеМетодаJS();
И вот внутри НазваниеМетодаJS() кодом JS реализуй прокрутку как надо
3 SerF_2011
 
28.03.24
11:20
4 ST_
 
28.03.24
15:07
Помогло подключение обработчика ожидания, тогда
Элементы.ПредпросмотрHTMLБезВложений.Документ.body.scrollTop = Элементы.ПредпросмотрHTMLБезВложений.Документ.body.offsetHeight + 9999;
сработал!
5 ST_
 
28.03.24
15:08
(1),(2), спасибо!
6 Garykom
 
28.03.24
15:16
(4) Это стандартно, задержка
Надо время давать webkit чтобы подгрузить и обработать страницу
Даже в обработчике события ДокументСформирован не факт что документ уже готов, весь внутренний код JS отработал

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

Важно помнить, что, при изменении документа (программном изменении,  либо при навигации поля HTML документа) объекты HTML документа перестраиваются не моментально. В течении некоторого времени объектная модель документа не готова к использованию. Поэтому при разработке алгоритма, модифицирующего HTML документ, следует дождаться готовности HTML документа.

Для получения информации о готовности HTML документа к работе рекомендуется использовать обработчик события ДокументСформирован поля HTML-документа. При этом нужно помнить о следующей особенности: в момент окончания формирования документа, сообщение о событии помещается в очередь, но, до того как оно будет обработано, может произойти новое изменение HTML документа. Например, первый вызов данного события в форме обычно информирует о внутренней навигации поля HTML-документа. Поэтому в обработчике события ДокументСформирован  рекомендуется также анализировать значение свойства readyState HTML-документа.
Значение этого свойства показывает текущий этап формирования HTML документа. В случае, когда значение равно Complete, формирование объектной модели завершено, документ готов к работе.

Не следует анализировать готовность HTML документа вне обработчика события ДокументСформирован путем циклического опроса значения свойства readyState:

Копировать в буфер обмена
Пока ЭлементыФормы.ПолеHTMLДокумента.Документ.readyState <> "complete" Цикл

КонецЦикла;
Такой цикл может работать бесконечно, т.к. формирование HTML документа использует в своей работе синхронный обмен сообщениями через системную очередь сообщений, а обработки нового сообщения, в данном случае, не происходит.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший