Публикация

Интеграция с "коробочным" сайтом (без доступа к коду веб-формы)

Решали любопытный кейс - у клиента сайт платформенный, т.е. без доступа к исходному коду и, как следствие, к свойствам кнопки "Отправить". В такой ситуации сотворить интеграцию с bpm'online крайне проблематично. Но орешек знаний тверд, а мы не привыкли отступать: 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://webtracking-v01.bpmonline.com/JS/track-cookies.js"></script>
<script src="https://webtracking-v01.bpmonline.com/JS/create-object.js"></script>
<script>
 
 
var config = {
    fields: {
        "Contact": "#field-wnd_ShortTextField_754782",
        "Email": "#field-wnd_EmailField_521715",
	"Commentary": "#field-wnd_LongTextField_343537"
    },
    landingId: "ab6c91e8-28a8-4753-a5c7-6fd6ac756745",
    serviceUrl: "https://<url вашей системы/0/ServiceModel/GeneratedObjectWebFormService.svc/SaveWebFormObjectData",
    redirectUrl: ""
};
 
function createLead() {
    landing.createLeadFromLanding(config)
}
 
function addEvent(elem, event, fn) {
	function listenHandler(e) {
		var ret = fn.apply(this, arguments);
			if (ret === false) {
            	e.stopPropagation();
            	e.preventDefault();
          	}
			return(ret);
		}
 
        function attachHandler() {
			var ret = fn.call(elem, window.event);   
			if (ret === false) {
				window.event.returnValue = false;
				window.event.cancelBubble = true;
			}
			return(ret);
		}
 
		if (elem.addEventListener) {
			elem.addEventListener(event, listenHandler, false);
		} else {
			elem.attachEvent("on" + event, attachHandler);
		}
	}   
 
	function submitWait(){
		clicked();
		return false;
	}
 
	var myForm = document.forms[0];
	var inputs = document.getElementsByTagName('input');
	addEvent( myForm, 'submit', submitWait );
 
	function clicked() {
		createLead();
		console.log("clicked");
	}
</script>

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

Имена полей находим инспектором:

        "Contact": "#field-wnd_ShortTextField_754782",
        "Email": "#field-wnd_EmailField_521715",
	"Commentary": "#field-wnd_LongTextField_343537"

 Ну и все собственно. Удачи и здоровья всем :)

Нравится

Поделиться

0 комментариев
Показать все комментарии