(function() { // running in private context, no namespace pollution :-) var delay = 250; // each 250 ms, content height will be checked var current_height = 0; // assume starting height is 0px // other arguments are passed in URL, for example: // http://www.wdfiles.dev/local--html/start/5d5a0384a922dd96ac0db81d715a5bf348d43c57/www.wikidot.dev/?ukey=1b91d581807e1ba924db3d456f2b8f43b51a1ea0 // ^ keep the same protocol (http/https) ^ iframe hash to pass when resizing ^ original domain ^ authorization key var url_array = location.toString().split('/'); var iframe_hash = url_array[5]; var random = Math.random(); var resize_div_id = 'div_' + iframe_hash + random; var resize_iframe_id = 'iframe_' + iframe_hash + random; var resize_url = url_array[0] + '//' + url_array[6] + '/common--javascript/resize-iframe.html'; // ^ http: ^ www.wikidot.dev (original domain) var get_height = function() { if (document.body.scrollHeight) { return document.body.scrollHeight; } if (document.height) { return document.height; } return document.body.offsetHeight; }; var resize = function() { var div = document.getElementById(resize_div_id); var old_iframe = document.getElementById(resize_iframe_id); if (old_iframe) { div.removeChild(old_iframe); delete old_iframe; } var iframe = document.createElement("iframe"); iframe.id = resize_iframe_id; iframe.src = resize_url + "?" + Math.random() + "#" + current_height + "/" + iframe_hash; div.appendChild(iframe); }; // every miliseconds: // if height changed from last time, do resize var tick = function() { var new_height = get_height(); if (new_height != current_height) { current_height = new_height; resize(current_height); } setTimeout(tick, delay); }; var init = function() { var div = document.createElement("div"); div.id = resize_div_id; div.setAttribute('style', 'display: none'); div.style.display = 'none'; // this way it works even in IE document.body.appendChild(div); tick(); }; var old_onload = window.onload; window.onload = function() { if (typeof(old_onload) == "function") { old_onload(); } init(); }; })();