let KING_iframe function FrameBuilder(title, url, initialHeight) { this.formId = 'custom_king_form'; this.frameMinWidth = '100%'; this.initialHeight = initialHeight; this.defaultHeight = ''; this.src = url var htmlCode = ''; //var newFrame = document.createElement("iframe") //newFrame.style.minWidth = this.frameMinWidth //newFrame.src = this.src //newFrame.id = this.formId //document.body.append(newFrame) //console.log("Current Script:", document.currentScript) document.currentScript.insertAdjacentHTML("afterend", htmlCode) //document.write(htmlCode); KING_iframe = document.getElementById(this.formId); //var doc = KING_iframe.contentDocument ? KING_iframe.contentDocument : (KING_iframe.contentWindow.document || KING_iframe.document); //doc.write(innerHTML) } FrameBuilder("Blabla", 'https://forms.kingtechnology.com/form/newsletter_signup_consumer', 1730); //let KING_before = [] //let KING_after = [] function updateFrameHeight() { var frameHeight = KING_iframe.contentDocument.body.offsetHeight if (KING_iframe.height != frameHeight) { KING_iframe.height = frameHeight; } //setTimeout(updateFrameHeight, 100); } window.addEventListener("DOMContentLoaded", function () { //KING_iframe = document.getElementById("custom_king_form") //setTimeout(updateFrameHeight, 500) //console.log("got iframe:", KING_iframe) //uncomment the following line to enable sending data to the form iframe_window = KING_iframe.contentWindow //Calculate heights //let before = true //for(let section of document.getElementsByTagName('section')){ // if(section.querySelector('#custom_king_form') != null){ // before = false // continue // } // if(before){ // KING_before.push(section) // } // else{ // KING_after.push(section) // } //} window.addEventListener("message", function (e) { //TODO: verify message origin if (e.origin !== 'https://forms.kingtechnology.com') { return; } //console.log(e) if (e.data == 'recaptcha-setup') { return } if ("myHeight" in e.data) { KING_iframe.height = e.data.myHeight; } if ("getScroll" in e.data) { let formTop = -KING_iframe.getBoundingClientRect().y let header = document.getElementById('header').offsetHeight let top = formTop + header; if(top < 0){ top = 0; } iframe_window.postMessage({ "scroll": top, "data": e.data.getScroll }, KING_iframe.src) } if ("newTab" in e.data) { window.open(e.data.newTab, '_blank') } if ("redirect" in e.data) { location.href = e.data.redirect } if ("replace" in e.data) { location.replace(e.data.redirect) } if("getParams" in e.data) { const url = new URL(window.location.toLocaleString()); let params = {} for(let [k,v] of url.searchParams.entries()){params[k] = v} iframe_window.postMessage({ "params": params }, KING_iframe.src) } //Uncomment next line for debugging //console.log("Outside", e) //To send a message to the form: //iframe_window.postMessage("Test", iframe.src) }) }, false)