jsFiddle - good service, but... internet connection sometimes goes down, or simply server not respond. So, I create fast alternative for my favorite service, where I can play with fiddles locally. It uses localStorage, for savings.
<!DOCTYPE html>
<html>
<head>
<style>
body,html,form{height:100%;width:100%;
margin:0;
padding:0;
background-color: rgba(255,255,255,.5);
color: #222;
outline:gray solid 1px;
font-family: monospace;
display: table;
}
input{ width: 20%; border: 0; background-color: inherit; outline: gray solid 1px;position:absolute; left:-20%;margin-left:80%;bottom:0;}
input+input{margin-left:40%}
input+input+input{margin-left:60%}
textarea, iframe {
display: block;
float: left;
vertical-align:top;
margin:0;
padding:1em;
font-size:10pt;
border:0;
outline:inherit;
width: 100%;
max-width: -webkit-calc(50% - 2em);
max-height: -webkit-calc(50% - 1em);
max-height:50%;
height: 50%;
background-color:inherit;
color:inherit;
}
iframe{padding:0;max-width:50%;}
</style>
</head>
<body>
<form action="http://jsfiddle.net/api/post/jquery/edge/dependencies/more/" method="post">
<input type="submit"/></form>
<script>
(function (variables,template){
for ( v in variables) {
e = document.createElement(v<2 && "input" || "textarea");
e.id = e.name =variables[v];
e.placeholder = variables[v];
e.onchange = function(){
var out = template;
for ( v in variables) {
this[v] = document.getElementById(variables[v]).value = document.getElementById(variables[v]).value || localStorage.getItem(variables[v]);
out = out.replace('$'+variables[v], this[v]);
localStorage.setItem(variables[v],this[v]);
}
//console.log([variables,template],out);
!document.getElementById("out") || (document.getElementById("out").src = "data:text/html,"+out);
}
document.forms[0].appendChild(e);
}
e.onchange();
e = document.createElement("iframe");
e.id = "out";
document.forms[0].appendChild(e);
})(['title','description','css','html','js'],"<!DOCTYPE html>\
<html>\
<head>\
<title>$title</title>\
<meta charset=\"utf-8\" />\
<meta name=\"description\" content=\"%s\"/>\
<style>$css</style>\
</head>\
<body>\
$html\
<canvas id=\"c\"></canvas>\
<script>\
var b = document.body;\
var c = document.getElementsByTagName('canvas')[0];\
var a = c.getContext('2d');\
document.body.clientWidth;\
\
$js\
\
<\/script>\
</body>\
</html>");
</script>
</body>
</html>