UNPKG

1.17 kBJavaScriptView Raw
1import window from "window"
2import listen from "./helpers/listen"
3import dataLayerPush from "./helpers/dataLayerPush"
4import isJson from "is-json"
5
6
7function postMessageListner(postMessageCallback) {
8 let status = {}
9 /* browser capabilities check */
10 if (!window.postMessage) {
11 status.error = 'cannot run this browser, no postMessage'
12 return status
13 }
14 if (!window.JSON || !window.JSON.stringify || !window.JSON.parse) {
15 status.error = 'cannot run this browser, no JSON parsing/serialization'
16 return status
17 }
18 let lastLoadedUrl = ""
19 listen("message", function (event) {
20 console.log(event)
21 if (isJson(event.data)) {
22 let message = JSON.parse(event.data)
23 if (message.event === "iframe.load") {
24 if (message.iframeUrl !== lastLoadedUrl) {
25 postMessageCallback(message)
26 dataLayerPush("Post Message", message)
27 }
28 lastLoadedUrl = message.iframeUrl
29 }
30 } else {
31 console.log("Invalid event.")
32 }
33 })
34 return status
35}
36
37export default postMessageListner
\No newline at end of file