Ich habe ein WordPress-Plugin, das Seiten mit AJAX lädt und die Kompatibilität mit anderen Plugins und "Widgets" gewährleistet.Was ist die beste Methode zum dynamischen Sandbox-Inline-JavaScript?
Ab jetzt verwende ich den folgenden Code all Inline-JS zu bewerten, die in den Inhalten Blöcke aktualisiert werden:
function do_JS(e){
var Reg = '(?:<script.*?>)((\n|.)*?)(?:</script>)';
var match = new RegExp(Reg, 'img');
var scripts = e.innerHTML.match(match);
var doc = document.write;
document.write = function(p){ e.innerHTML = e.innerHTML.replace(scripts[s],p)};
if(scripts) {
for(var s = 0; s < scripts.length; s++) {
var js = '';
var match = new RegExp(Reg, 'im');
js = scripts[s].match(match)[1];
js = js.replace('<!--','');
js = js.replace('-->','');
eval('try{'+js+'}catch(e){}');
}
}
document.write = doc;
}
Ich möchte in der Lage sein, den JS ein bisschen besser Sandbox so dass das Risiko von Konflikten minimiert wird. Eine Idee, die ich hatte, war, eine dynamisch zu erstellen und das JS darin auszuführen, aber ich hatte gehofft, dass es eine etwas bessere Methode gab, um sowohl die Kompatibilität sicherzustellen als auch die Sicherheit zu erhöhen.
Leider läuft dieses Plugin auf Hunderten von Websites, die ich überhaupt nicht kontrolliere, so dass ich keine JS-Snippets durch Caja wie eine Site wie MySpace ausführen kann. Die Lösung muss neu verteilt werden können. –