Source for demo by Ken Snyder.
D="<div id=";I="<input id=";h="innerHTML";u="toUpperCase";y="selectedIndex";q="value";z=document;l=location;function x(a){j=a.toString(16);return((j.length%2?"0":"")+j)[u]()}function $(a){return z.getElementById(a)}function g(){O="<select id=o onchange=w=this.options[this[y]][q];b(w);l.hash=w>";P=-1;while(P++<255){O+="<option value="+P+">x"+x(P*256)+" ("+P*256+")"}O+="</select>";return O}function b(a){a*=256;C=-1;T="<table border=1 cellspacing=0 cellpadding=2><tr><th>";while(C++<15){T+="<th>"+C.toString(16)[u]()}R=-1;while(R++<15){T+="<tr><th>"+x(a+R*16).replace(/.$/,"_");C=-1;while(C++<15){V=a+C+R*16;T+=V==0?"<td>":"<td onmouseover=$('c')[h]=this[h] onclick=\"$('a')[q]+=this.title.split(' ')[0];$('b')[q]+=this[h]\" title='&#x"+x(V)+"; / &#"+V+";'>"+String.fromCharCode(V)}}$("t")[h]=T}z.body[h]="<style>*{font:14pt Arial}</style><h1>HTML Charmap</h1>"+g()+"<br>"+D+"t style=float:left;padding-right:20px></div>HTML: "+I+"a><br>Char: "+I+"b>"+D+"c style=font-size:200pt>";b($("o")[y]=l.hash.slice(1)||0);