function throttle(fn, threshhold = 250, scope) { var last, deferTimer; return function () { var context = scope || this; var now = +new Date, args = arguments; if (last && now < last + threshhold) { // hold on to it clearTimeout(deferTimer); deferTimer = setTimeout(function () { last = now; fn.apply(context, args); }, threshhold); } else { last = now; fn.apply(context, args); } }; } function sendHeight(){ var $container = document.querySelector('body > .container'); if($container && $container.offsetHeight){ parent.postMessage($container.offsetHeight, "*"); } } if(parent.postMessage){ addEventListener('resize', throttle(sendHeight, 100)); addEventListener("DOMContentLoaded", sendHeight); }