Ho un plugin per WordPress che carica pagine con AJAX e garantisce la compatibilità con altri plugin e "widget".Qual è il metodo migliore per sandbox in linea dinamico in modo dinamico?
A partire da ora io uso il seguente codice per valutare tutte JS in linea che si trova all'interno dei blocchi di contenuto da aggiornare:
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;
}
mi piacerebbe essere in grado di sandbox JS un po 'meglio così che il rischio di conflitti è ridotto al minimo. Un'idea che ho avuto è stata quella di creare dinamicamente uno ed eseguire il JS al suo interno, ma speravo che ci fosse un metodo migliore per garantire la compatibilità e aumentare la sicurezza.
Sfortunatamente, questo plugin gira su centinaia di siti che non controllo affatto, quindi non posso eseguire snippet JS attraverso Caja come un sito come myspace. La soluzione deve essere ridistribuibile. –