Binotel активировать виджет на Javascript
Javascript

Binotel активировать виджет на Javascript – рабочий код

Binotel – это сервис виртальных АТС, который позволяет разместить виджет на сайте, для запроса звонка. Предположим, у вас на сайте есть кнопка «Перезвоните мне», отдельная от виджета Binotel. Сегодня мы разберемся как можно Binotel активировать виджет на Javascript.

Как реализовать «Binotel активировать виджет без Javascript»?

Раньше был метод, как вызвать окно Binotel кастомной кнопкой. Первый метод был связан с добавлением в кнопку специальных имен классов, к которым Binotel добавлял обработчики события клика, и сам активировал окно виджета. Ниже я приведу пример такого кода, взятый с другого сайта. Я не тестировал работу этих классов в последней версии виджета Binotel (пример создан давно, и может устареть):

<a class=“bingc-action-open-passive-form" 
data-getcall-title-in-working-hours="Узнайте больше об акции “Лето 2016”. Мы перезвоним за <b>30</b> секунд." 
data-getcall-description="Акция - Легкий старт">
Закажите звонок
</a>

Но подход с классами лично меня не устроил, потому, что показывать окно виджета Binotel мне нужно было не сразу по клику, а после обработки нескольких условий и даже xhr запроса на сервер «показать виджет или не показать?».

Как показать окно виджета на Javascript?

Порывшись немного в коде виджета Binotel, который встраивается в страницу, я нашел, что код добавляет в объект window объект BinotelGetCall, который, видимо в целях безопасности, имеет только одно свойство с именем-номером, а значением – объектом бинотел, с функциями. В этом секретном объекте под индексом, есть функция openPassiveForm, которая нам и нужна, как оказалась.

Порывшись ещё немного в коде, у меня не получилось найти где же хранится этот индекс, который можно было бы использовать для обращение к секретному объекту BinotelGetCall. И даже, возможно мне показалось, сам код бинотела этого не знает, и обращается к элементам объекта в цикле.

Так или иначе, я тоже решил использовать такой подход: перебрать в цикле все (а он один) элементы объекта BinotelGetCall, и у каждого (а он один) вызвать функцию openPassiveForm.

for(var i in window.BinotelGetCall){
window.BinotelGetCall[i].openPassiveForm('Перезвоните мне')
}

Код проверено работает на май 2019. Странно, что бинотел сам не распространяет информацию о том, как активировать окно виджета при помощи Javascript.

Этот код можно добавить как в обработчик события (клика, или, например, фокуса инпута) или как отдельное действие.

Для вашего удобства можно его даже обернуть в функцию:

function showBinotel(text){
for(var i in window.BinotelGetCall){
window.BinotelGetCall[i].openPassiveForm(text)
}
}

А использовать эту функцию очень просто:

showBinotel('Перезвоните мне')

Также рекомендуем: