// Create an iframe based on config if (xSell && xSell.hasOwnProperty('widgetTarget')) { var container = document.getElementById(xSell.widgetTarget), iframeID = 'hotels-iframe', iframeHost = 'https://widgets.hotels.com', iframePage = '/getXsellWidget'; if (container) { var iframe = document.createElement('iframe'); iframe.id = iframeID; iframe.referrerPolicy = 'no-referrer'; iframe.src = iframeHost + iframePage + '?'; for (var key in xSell) { if (xSell.hasOwnProperty(key)) { iframe.src += encodeURIComponent(key) + '=' + encodeURIComponent(xSell[key]) + '&'; } } iframe.src += 'origin=' + encodeURIComponent(window.location.origin); iframe.setAttribute('allow', 'geolocation'); iframe.setAttribute('scrolling', 'no'); iframe.setAttribute('frameborder', '0'); iframe.setAttribute('width', '100%'); // Required for IE9 iframe.setAttribute('height', '520'); iframe.setAttribute('title', 'hotel deals'); // Setting the default height to match actual content to avoid jumping while the page loads iframe.style = 'overflow: hidden; border: 0; margin: 0; padding: 0; height: 520px; width: 100%; transition: height 0.3s ease-in-out;'; container.appendChild(iframe); window.xsTimer = window.xsTimer || {}; var handleIframeResize = function (event) { if (event.origin === iframeHost) { // new version, handles multiple iframes at once if (event.data.target) { var target = event.data.target; xsTimer[target] && clearTimeout(xsTimer[target]); xsTimer[target] = setTimeout(function () { document.querySelector('#' + target + ' > iframe#' + iframeID).style.height = parseInt(event.data.height, 10) + "px"; }, 150); } // old version - fallback until DIO update gets released too else { iframe.style.height = parseInt(event.data, 10) + "px"; } } }; if (window.addEventListener) { window.addEventListener('message', handleIframeResize, false); } else if (window.attachEvent) { window.attachEvent('onmessage', handleIframeResize); } } }