Tôi có một plugin WordPress tải các trang với AJAX và để đảm bảo khả năng tương thích với các plugin khác và "tiện ích con".Phương pháp tốt nhất cho JavaScript nội tuyến động sandbox là gì?
Tính đến ngay bây giờ tôi sử dụng đoạn mã sau để đánh giá tất cả JS trực tiếp mà là bên trong các khối nội dung được cập nhật:
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;
}
Tôi muốn để có thể sandbox JS một chút tốt hơn rất nguy cơ xung đột được giảm thiểu. Một ý tưởng tôi đã có là tự động tạo ra một và chạy JS bên trong của nó, nhưng tôi đã hy vọng có một phương pháp tốt hơn một chút để đảm bảo tính tương thích và tăng tính bảo mật.
Thật không may, plugin này chạy trên hàng trăm trang web mà tôi không kiểm soát, vì vậy tôi không thể chạy đoạn mã JS thông qua Caja như một trang web như myspace. Giải pháp cần phải được phân phối lại. –