JSFiddle - React, Tailwind, and code Playground
HTML
<iframe src="http://fiddle.jshell.net/fF9Hp/6/show/"></iframe>
CSS
html, body {
background: #d0e5ff;
}
JavaScript
if (window.addEventListener) window.addEventListener("message", handleIframelyMessage, false);
else window.attachEvent("onmessage", function (e) { return handleIframelyMessage.call(this,e||window.event); });
function handleIframelyMessage (event) {
var m;
if (typeof event.data !== "string" || !(m = /^iframely:style:(.*)/.exec(event.data))) {
return;
}
// important: filter style so no shenanigans can happen
var params = m[1].split("&");
var style = {};
var strstyle = [];
var allowed = {width:true, height:true, border:true, background:true, overflow:true};
for (var i = 0; i < params.length; ++ i) {
var param = params[i].split("=");
var key = decodeURIComponent(param[0]);
if (allowed[key] === true) {
var value = decodeURIComponent(param.slice(1).join("="));
style[key] = value;
strstyle.push(key+":"+value+";");
}
}
strstyle = strstyle.join("");
var elems = document.getElementsByTagName("iframe");
for (var i = 0; i < elems.length; ++ i) {
var elem = elems[i];
if (elem.contentWindow === event.source) {
var border = (style.border||'').replace(/^\s+/,'').split(/\s+/);
if (border[0] === "0" || border[1] === 'none') {
elem.setAttribute("frameBorder", "0");
}
if (style.overflow === "hiddden") {
elem.setAttribute("scrolling","no");
}
else if (style.overflow === "scroll") {
elem.setAttribute("scrolling","yes");
}
else if (style.overflow === "auto") {
elem.setAttribute("scrolling","auto");
}
elem.style.cssText = elem.style.cssText ? elem.style.cssText+";"+strstyle : strstyle;
break;
}
}
}