Имя: Пароль:
1C
 
Почтовик в 1С
,
0 PR
 
25.08.16
15:00
1. Вот так... 100% (1)
2. Это невозможно 0% (0)
3. Свое мнение 0% (0)
Всего мнений: 1

Делаю в 1С 8.3 отображение полученного электронного письма в поле html-документа в УФ.
Что плохо:
1. Если в страничке есть всякие кнопочки (типа "Найти" на http://www.ya.ru), то на них можно нажать и они прекрасно нажимаются и страничка меняется.
2. При нажатии на ссылку то же самое, страничка меняется.
3. Всякие прочие вещи так же приводят к смене содержимого странички.
А хочется как в Outlook, типа получил письмо и все дальнейшие вещи только в отдельном новом окне ie.

Как? Может как-то менять текст html перед тем, как его присваивать в поле html-документа?
Про ссылки-то я еще нашел, что нужно писать после head "<base target="_blank">", не очень уверен в верности решения, но думаю, что верно.
А вот с кнопочками что делать например? С остальными вещами, какими, кстати? Ловить событие "ПриНажатии" и там уже анализировать? Если да, то что?
Или может в свойстве Document что-то можно подкрутить?
1 oslokot
 
25.08.16
15:03
клиента из БСП внедрил?
2 PR
 
25.08.16
15:05
(1) Нет. И в БСП это не решено. Да что в БСП, даже в Документообороте не решено.
3 oslokot
 
25.08.16
15:07
просто я внедрил в бп3 из бсп с минимальными изменениями и ссылки открываются о вне. ща тока что проверил несколько писем
4 oslokot
 
25.08.16
15:09
хз, писем с хтмл содержащие кнопки не найду у себя...
5 PR
 
25.08.16
15:26
(4) Это редкий зверь, я себе специально делал. Заходил на http://www.ya.ru, копировал текст странички и этот html вставлял в текст письма.
6 oslokot
 
25.08.16
15:33
(5) просмотрел тела десятков писем, везде во все ццылки подставлены target="_blank"
(это подсистему "взаимодействия" я из бсп целиком брал)

ну, с кнопками в html наверное беда будет)
7 oslokot
 
25.08.16
15:41
(6) + да, беда) послал себе писбмо со страницей яндекса. Переход по кнопке найти состоялся в этой же страничке
8 oslokot
 
25.08.16
15:54
как вариант ловить в принажатии, например

ДанныеСобытия.Document.activeElement.type
9 PR
 
25.08.16
16:44
(6) Проверил сейчас, да, сделали открытие в новых окнах, не отследил.
Проверил с кнопочкой, бяда :))
10 PR
 
25.08.16
16:45
(8) Да это понятно, вопрос в том, что ловить? :))
А точнее, что запрещать? Когда что?
11 oslokot
 
25.08.16
16:51
(10) первое что пришло в голову :)

в событии ПиНажатии
Если нРег(ДанныеСобытия.Element.type) = "submit" Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
12 PR
 
25.08.16
16:53
(11) Это понятно, но хочется сделать с гарантией, чтобы уж точно враг не прошел во всех случаях :))
13 oslokot
 
25.08.16
16:56
кстати, есть хорошее событие ДанныеСобытия.Event.type = "click"
имхо, это есть панацея :)
14 oslokot
 
25.08.16
16:59
т.е. можно вообще запретить все клики, кроме кликов по ссылке
15 Mauser
 
25.08.16
17:02
Нет.
У тебя там попадется клик на какой нибудь <div>, который позовет js, который сделает submit() и аляулю

Надо санитайзить принятый html - для окон: искать все a, area, base, form и принудительно ставить им target="_blank"
16 PR
 
25.08.16
17:19
(15) Хех, то есть проще путей нет?
17 hitodom
 
25.08.16
17:22
добавь кнопку "вернуться" и пусть переходят
18 PR
 
25.08.16
17:23
Посмотрел в БСП.
Там сделано так

Процедура ПолеHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) Экспорт
    
    Если ДанныеСобытия.Href <> Неопределено Тогда
        СтандартнаяОбработка = ЛОЖЬ;
        
        ОбщегоНазначенияКлиент.ПерейтиПоСсылке(ДанныеСобытия.Href);
        
    КонецЕсли;
    
КонецПроцедуры

То есть, возможно, будет решением сделать так:

Процедура ПолеHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) Экспорт
    
    СтандартнаяОбработка = ЛОЖЬ;
    
    Если ДанныеСобытия.Href <> Неопределено Тогда
        ОбщегоНазначенияКлиент.ПерейтиПоСсылке(ДанныеСобытия.Href);
    КонецЕсли;
    
КонецПроцедуры
19 Mauser
 
25.08.16
17:24
(16) Если хочешь с гарантией, то нет.

https://habrahabr.ru/company/yandex/blog/222513/
20 PR
 
25.08.16
17:49
(19) Не, ну я не настолько глубоко хочу заморочиться
21 romix
 
25.08.16
18:11
Надо чистить HTML при помощи RegExp.

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

Возможно, есть уже готовые разработки или скрипты на эту тему, которые можно запускать как внешнее приложение.

Вот так...
22 Mauser
 
25.08.16
18:25