PageSourceSearch

https://www.sae.edu/fra/wp-content/plugins/ad-forms-wp/front/assets/iframe-manager.js?ver=7.1

js sae.edu collected 2026-09-24 08:30:45 UTC 4,289 bytes, 129 lines download raw bytes

1(function () {
2    function domReady(fn) {
3        // If we're early to the party
4        document.addEventListener("DOMContentLoaded", fn);
5        if (document.readyState === "interactive" || document.readyState === "complete") {
6            fn();
7        }
8    }
9
10    function getCookie(name) {
11        var value = "; " + document.cookie;
12        var parts = value.split("; " + name + "=");
13        if (parts.length === 2) {
14            return parts.pop().split(";").shift();
15        } else {
16            return null;
17        }
18    }
19
20    class AdFormsWpIframe {
21        constructor(parent) {
22            this.parent = parent;
23            this.id = Math.ceil(Math.random() * 1e12);
24            this.el = document.createElement("iframe");
25        }
26
27        get type() {
28            return this.parent.dataset.type;
29        }
30
31        release() {
32            let src = this.parent.dataset.iframeUrl;
33            src += (src.indexOf('?') === -1 ? '?' : '&');
34            src += 'iframe_id=' + this.id;
35            const hutk = getCookie('hubspotutk');
36            if (hutk) {
37                src += '&hutk=' + hutk;
38            }
39            this.el.setAttribute('src', src);
40            this.el.id = this.id;
41            this.el.setAttribute('style', 'width:100%;border:none');
42            this.parent.appendChild(this.el);
43        }
44
45        setHeight(ht) {
46            this.el.style.visibility = 'hidden';
47            this.el.style.height = ht + "px";
48            this.el.style.width = "100%";
49            this.el.style.visibility = 'visible';
50        }
51    }
52
53    class AdFormsWpManager {
54        constructor(sel) {
55            this.sel = sel;
56            this.iframes = {};
57            window.addEventListener('message', (e) => {
58                this.treatMessage(e);
59            }, false);
60        }
61
62        release() {
63            const formDivTargets = document.querySelectorAll(this.sel)
64            for (var index = 0; index < formDivTargets.length; index++) {
65                const iframe = new AdFormsWpIframe(
66                    formDivTargets[index]
67                );
68                this.iframes[iframe.id] = iframe;
69                iframe.release();
70            }
71        }
72
73        treatMessage(e) {
74            if (typeof e.data !== 'string') {
75                return;
76            }
77            // parse data
78            var message = JSON.parse(e.data);
79
80            if (message.source === 'ad-forms-iframe') {
81                const ifrm = this.iframes[message.iframeId];
82                switch (message.type) {
83                    case 'resize' :
84                        ifrm.setHeight(message.data.height);
85                        break;
86                    case 'formSent' :
87                        if (window.dataLayer) {
88                            dataLayer.push({
89                                event: "ad-forms-wp.formSent",
90                                formType: ifrm.type,
91                                formData: message.data.data,
92                                formResponse: message.data.response,
93                            });
94                        }
95                        break;
96                    case 'formError' :
97                        if (window.dataLayer) {
98                            dataLayer.push({
99                                event: "ad-forms-wp.formError",
100                                formType: ifrm.type,
101                                formData: message.data.data,
102                                formResponse: message.data.response,
103                            });
104                        }
105                        break;
106                    case 'redirect' :
107                        window.location = message.data.url;
108                        break;
109                    default:
110                        console.log('iframeManager - Unknown message type : ', message);
111                }
112            }
113        }
114
115        sendMessage(iframeId, type, data)        {
116            var message = JSON.stringify({
117                type: type,
118                data: data
119            });
120            this.iframes[iframeId]
121                .contentWindow
122                .postMessage(message, '*');
123        }
124    }
125
126    domReady(function () {
127        (new AdFormsWpManager('div.ad-form-iframe-cntnr')).release();
128    });
129})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.