Events
SDK comes with certain events that can be attached to the
beacon-app
element. They work the same way how normal events work in JavaScript.
Standard usage of all events are given below.var beacon = document.getElementsByTagName('beacon-app')[0];
beacon.addEventListener('<EVENT_NAME>', function(event) {
/* Event body goes here */
});
The
event
object includes the standard properties along with special properties that come with the SDK.Following are different
<EVENT_NAME>
that is supported in the SDK.This event is fired when the beacon window is ready and is about to be shown to the visitor. The data of the beacon has already loaded, but
callMessage
is not yet shown to the visitor.This is the best time to modify the
callMessage
, primaryColor
attribute of beacon window. Read more on callMessage, primaryColorvar beacon = document.getElementsByTagName('beacon-app')[0];
beacon.addEventListener('ready', function() {
/* Body goes here. Given below is how you can modify
the callMessage attribute */
beacon.callMessage = 'Hello World';
});
This event is fired when a button is clicked in the beacon window. Since Beacon tries to use Shadow DOM, it is not possible to directly attach an event listener to a button inside the beacon window. Hence, this event exposes the click listener of buttons.
Button
name
must be set in the Beacon editor. If it is not added, button would not show up once beacon window is embedded.Button name plays a crucial role in this event. Since a beacon window can have multiple buttons, it is cumbersome to add event listeners for every button click. Hence, the SDK uses the name of the button to uniquely identify each button in the beacon window.
Make sure you have different button names, otherwise it will become hard to identify which button was clicked.
The
name
of the button is available in the event object of the event listener. It can be used as followsvar beacon = document.getElementsByTagName('beacon-app')[0];
beacon.addEventListener('buttonclick', function(e) {
/* All the custom data is available in the 'detail'
property */
if (e.detail.event == 'myButton1') {
/* Body of myButton1 */
}
else if (e.detail.event == 'myButton2') {
/* Body of myButton2 */
}
/* 'myButton1' and 'myButton2' are names of buttons
which can be set in the Beacon editor */
});
The above usage of the button events are preferred as this prevents you from adding multiple event listeners to the
beacon-app
element.Last modified 4yr ago