1 | import window from "window"
|
2 | import listen from "./helpers/listen"
|
3 | import dataLayerPush from "./helpers/dataLayerPush"
|
4 | import isJson from "is-json"
|
5 |
|
6 |
|
7 | function postMessageListner(postMessageCallback) {
|
8 | let status = {}
|
9 |
|
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 |
|
37 | export default postMessageListner |
\ | No newline at end of file |