(function browserLoadZones (zones) { // In parent document // Create IE + others compatible event handler var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window eventer(messageEvent, function (e) { var m = e.data.match(/^resizeZone:([^\s]+),(\d+),(\d+)$/); if (m) { m.shift(); resizeZone.apply(window, m); } },false); function resizeZone (zone, width, height) { var e = document.querySelector('[data-guest-zone="' + zone + '"]'); if (e) { e.style.width = (Number(width) || 0) + 'px'; e.style.height = (Number(height) || 0) + 'px'; } } if (typeof window.postMessage !== 'function') { window.resizeZone = resizeZone; } try { var zone; var box; for (var i = zones.length - 1; i >= 0; i--) { zone = zones[i]; box = document.querySelector('[data-guest-zone="' + zone.zone + '"]'); box.parentNode.innerHTML = box.innerHTML.replace(/</g, '<').replace(/>/g, '>').replace(/\s+src=(['"])[^\1]*\1/, ' src="' + zone.location + '" data-guest-zone="' + zone.zone + '"'); } } catch (e) { if (typeof window.console !== 'undefined') { console.error('Error while loading zones', e); } } })([]);