document sandbox
example
by Ukjin Yang
HTML
<pre id="out">
WELCOME.
</pre>
JavaScript
var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;
function getParamNames(func) {
var fnStr = func.toString().replace(STRIP_COMMENTS, '');
var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
if(result === null)
result = [];
return result;
}
function sandbox(func){
var anames = getParamNames(func);
anames = anames.map(function(method){
return function(){ return document[method].apply(document, arguments); };
});
func.apply(window, anames);
}
sandbox(function(createElement, getElementById, createTextNode){
var a, b;
a = createElement('p');
a.innerHTML = "hello world!";
document.body.appendChild(a);
b = getElementById('out');
b.appendChild(createTextNode('YAY~!'));
});