Привет всем!
На форме есть ПолеHTMLДокумента, текст html формируется динамически,
где то в html документе есть, например, кнопка
При нажатии на кнопку срабатывает функция test(). Каким образом среда 1С (ПолеHTMLДокумента или форма) может узнать о наступлении этого события?
Вот вызвать функцию test() из среды 1С можно так:
А как отловить событие?
На форме есть ПолеHTMLДокумента, текст html формируется динамически,
где то в html документе есть, например, кнопка
<button onclick=""test()"">Нажми меня</button>
При нажатии на кнопку срабатывает функция test(). Каким образом среда 1С (ПолеHTMLДокумента или форма) может узнать о наступлении этого события?
Вот вызвать функцию test() из среды 1С можно так:
Рез = ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow.eval("test()")
А как отловить событие?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) не через Com это жесть.
пока не заюзал нормального способа, мсдн тоже курить особо некогда, очень сильно поизвращался:
со стороны javascript, завел глобальную переменную procParam (знаю что плохо)
со стороны 1С в поле html документа ловится событие "onhelp" (для примера)
пока не заюзал нормального способа, мсдн тоже курить особо некогда, очень сильно поизвращался:
со стороны javascript, завел глобальную переменную procParam (знаю что плохо)
var evt = document.createEventObject();
document.body.procParam = pParam;
document.body.fireEvent('onhelp', evt);
со стороны 1С в поле html документа ловится событие "onhelp" (для примера)
Процедура ПолеHTMLonhelp(Элемент, pEvtObj)
Попытка
htmlElement = pEvtObj.srcElement;
procParam = htmlElement.document.body.procParam;
Справочники.[ХЗ].НайтиПоКоду(procParam).ПолучитьФорму().Открыть();
Исключение
КонецПопытки;
КонецПроцедуры
Показать
Есть еще вариант -
Получаешь ссылка на 1С-ный объект, лучше всего техническую обработку, как сделано в путеводителе и т.п.
В яве открываешь эту ссылку, в технической обработке при открытии делаешь оповещение открытых форм и сразу ее закрываешь, а в текущей форме подключаешь обработчик оповещения.
Получаешь ссылка на 1С-ный объект, лучше всего техническую обработку, как сделано в путеводителе и т.п.
В яве открываешь эту ссылку, в технической обработке при открытии делаешь оповещение открытых форм и сразу ее закрываешь, а в текущей форме подключаешь обработчик оповещения.
В старых IE толко всплывающие события javascript.ru и можно отловить его на поле HTML.
Пример как то такsikuda.ru
Пример как то так
Есть еще вариант передать в JavaScript ссылку на 1С-форму, а при событии из JavaScript вызывать экспортную функцию из модуля 1С формы.
Пример тут:
http://x1c.ru/kak_visvat_1c_is_js/
Проверено в 8.2.19.83 и 8.3.4.465
Пример тут:
Проверено в 8.2.19.83 и 8.3.4.465
Проще примерно так:
Procedure htmlOnClick(Item, EventData, StandardProcessing)
data1C = EventData.event.data;
If ValueIsFilled(data1C) Then
status = String(data1C);
Else
status = "stop";
EndIf;
EventData.Document.getElementbyId("Raphael").setAttribute("data-status", status);
EventData.Document.getElementbyId("handle").click();
EndProcedure
Показать
У меня получилоcь так:
javascript
1c
javascript
var evt = document.createEventObject();
evt.data = "Есть Маркер"
document.body.fireEvent('onclick', evt);
1c
Процедура
ПолеHTMLonclick(Элемент, pEvtObj)
Событие = pEvtObj.data;
Если Событие = "Есть Маркер" Тогда
Сообщить("Ура" + Событие);
КонецЕсли;
КонецПроцедуры
Показать
Вот еще на тему createEventObject согласно которой наковырялось вот что:
function ahtung(EventText) {
if (document.createEventObject) { // IE before version 9
var clickEvent = document.createEventObject(window.event);
clickEvent.data = EventText;
document.body.fireEvent("onclick", clickEvent);
}else{
if (document.createEvent("MouseEvent")) { // all browsers except IE before version 9
var clickEvent = document.createEvent("MouseEvent");
clickEvent.initMouseEvent ( "click", false,false,window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
clickEvent.data = EventText;
document.body.dispatchEvent(clickEvent);
}
}
}
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот