De nieuwe publieke module ondersteunt Google Analytics niet door toevoegen van scripts en/of tags. In plaats daarvan kan de publieke module op bepaalde momenten (zoals bijvoorbeeld het klikken op de knop “Boek nu” of “Meer informatie”) een bericht sturen naar de pagina van je website waarop het i-frame zich bevindt.
Net als bij de afmetingen van de publieke module betreft het hier een zogenaamde. “postMessage”.
De inhoud van deze berichten bevat, afhankelijk van het punt waarop het bericht werd verstuurd, o.a. de naam van de accommodatie en de geselecteerde periode.
Ook hiervoor dient je websitebouwer een stukje Javascript code op te nemen in de webpagina om te “luisteren” naar deze berichten. Bij het ontvangen van zo’n bericht kan je websitebouwer er bijvoorbeeld voor zorgen dat op basis van de inhoud e.e.a. worden doorgegeven aan Google Analytics.
De inhoud van zo’n bericht ziet er als volgt uit :
{"Action":"MoreInformation","BookingNumber":0,"BookingStart":"2021-04-02T00:00:00+02:00","BookingEnd":"2021-04-02T00:00:00+02:00","AccommodationName":"Alma Huis","AccommodationId":14129,"Price":0.0,"Language":"nl-NL"}
{"Action":"BookNow","BookingNumber":0,"BookingStart":"2021-04-02T00:00:00","BookingEnd":"2021-04-06T00:00:00","AccommodationName":"Alpaca","AccommodationId":15293,"Price":260.0,"Language":"nl-NL"}
{"Action":"SaveBooking","BookingNumber":10276,"BookingStart":"2021-04-02T00:00:00","BookingEnd":"2021-04-06T00:00:00","AccommodationName":"Alpaca","AccommodationId":15293,"Price":260.0,"Language":"nl-NL"}
Of alle waardes in dat bericht zijn gevuld en hoe ze zijn gevuld hangt af van de actie die zorgde dat het bericht werd verstuurd.
Zo zal bijvoorbeeld na het klikken op “Terug naar zoekresultaten” de inhoud uiteraard geen waardes hebben bij o.a. “BookingNumber” en “AccommodationName”.
Voorbeeld Javascript t.b.v. postMessages
Onderstaand een simpel stukje Javascript als voorbeeld hoe geluisterd kan worden naar postMessages.
- <html>
- <head>
- <meta charset="utf-8" />
- <title></title>
- <script>
- window.addEventListener("message", receiveMessage, false);
- function receiveMessage(event) {
- if (event.origin !== "https://public2.reflexholiday.nl") {
- return;
- }
- try {
- var data = JSON.parse(event.data);
- if (data) {
- if (data.Action == "sizeChanged") {
- document.getElementById('publicframe').style.height = data.PublicSize.height + 'px';
- }
- else {
-
- if (data.Action == "MoreInformation") {
- // Client click on the More information button of an accommodation
- console.log("Reserveringsnummer = " + data.BookingNumber);
- console.log("AccommodatieID = " + data.AccommodationId);
- console.log("Accommodatie Naam = " + data.AccommodationName);
- console.log("Startdatum = " + data.BookingStart);
- console.log("Einddatum = " + data.BookingEnd);
- console.log("Prijs = " + data.Price);
- console.log("Taal = " + data.Language);
- }
- if (data.Action == "BookNow") {
- // First Booking page
- console.log("Reserveringsnummer = " + data.BookingNumber);
- console.log("AccommodatieID = " + data.AccommodationId);
- console.log("Accommodatie Naam = " + data.AccommodationName);
- console.log("Startdatum = " + data.BookingStart);
- console.log("Einddatum = " + data.BookingEnd);
- console.log("Prijs = " + data.Price);
- console.log("Taal = " + data.Language);
- }
- if (data.Action == "NextStep") {
- // Second and Third Booking page
- console.log("Reserveringsnummer = " + data.BookingNumber);
- console.log("AccommodatieID = " + data.AccommodationId);
- console.log("Accommodatie Naam = " + data.AccommodationName);
- console.log("Startdatum = " + data.BookingStart);
- console.log("Einddatum = " + data.BookingEnd);
- console.log("Prijs = " + data.Price);
- console.log("Taal = " + data.Language);
- }
- if (data.Action == "SaveBooking") {
- // Booking is saved
- console.log("Reserveringsnummer = " + data.BookingNumber);
- console.log("AccommodatieID = " + data.AccommodationId);
- console.log("Accommodatie Naam = " + data.AccommodationName);
- console.log("Startdatum = " + data.BookingStart);
- console.log("Einddatum = " + data.BookingEnd);
- console.log("Prijs = " + data.Price);
- console.log("Taal = " + data.Language);
- }
- }
- }
- }
- catch (ex) { }
- }
- </script>
- </head>
- <body>
- <iframe id="publicframe" width="100%" frameborder="0" allowtransparency="true" src="https://public2.reflexholiday.nl/OnlineBooking/Search/Search.aspx?relation=aFQBsHihiNY%3d&languageid=1&locationid=0&searchmode=1" title="Boek hier uw accommodatie">
- </iframe>
- </body>
- </html>
Meer (technische) informatie omtrent postMessages is o.a. te vinden op https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage