Обратная связь из поля браузера в 1С

Иногда требуется что-то передать из поля браузера в 1С. Нашел решение на инфостарте, но оно уже устарело.

Но идея хорошая — вызывается событие onClick, а в этом событии содержатся уже необходимые данные для передачи в 1С.

Но в примере в JS используется устаревший, работавший только в IE метод FireEvent:

var evt = document.createEventObject(); // создадим пустой объект событие
evt.propertyName = 'функц1'; // в реквизит propertyName предлагаю помещать название результата ( что-то вроде типа, или название функции от которой получили данные )
evt.data = '156'; //в реквизит data будем передавать данные результата
document.body.fireEvent('onclick', evt); 

Я попробовал использовать новый синтаксис, все работало без ошибок, но событие не вызывалось:

var evt = document.createEvent('Event');     
evt.initEvent('onclick', 'zzz', 'bbb'); 
document.body.dispatchEvent(evt);

И тогда мне пришел гениальный по своей простоте ход. Я просто вызываю метод click у поля:

function call_1s(event) {  
	document.body.click();
}

<div onclick="call_1s(arguments[0])">TEST</div> 

Для проверки я создаю div с текстом TEST, при клике на котором формируется виртуальный клик.

И в поле ввода, содержащего HTML-документ вызывается сначала мой виртуальный клик, потом уже реальный клик по div TEST.

Понятно, что клик можно вызывать не только у body, но и у любого другого элемента, например у скрытого div и считывать его содержимое или тег value.

В общем такой простой и незамысловатый способ позволяет легко организовать обратную связь от поля браузера в 1С.

Я использую таким образом, что когда узел дерева сворачивается, извещаю об этом 1С, она запоминает состояние узла — свернутое или развернутое.

Кстати, чтобы понять, работает код или нет, я после каждой строки вставлял alert с номерами 1, 2, 3, 4…

Таким образом я понимал, на какой строке спотыкался JS. Можно было, конечно, catch использовать для ловли ошибок, но лень вспоминать его правила.