Скажем, я получил ответ на запрос загрузки данных AJAX со смесью JavaScript и HTML, например ::
<script>window.alert('Hello World!');</script>
<p>This is a paragraph. Lorem ipsum dolor sit amet...</p>
Если я просто помещу этот ответ в div
или другой контейнер, скрипт не будет выполнен автоматически. Я знаю, что это можно сделать с помощью функции eval()
(как отмечено в приведенном ниже примере), но eval
- это зло, так как я могу сделать это правильно? Примечание: Я не использую jQuery.
Ниже приведен пример загрузчика AJAX:
function Load(id,url){
var ajax=new XMLHttpRequest();
ajax.onreadystatechange=function(){
if(ajax.readyState!=4)return;
var obj=document.getElementById(id);
if(!obj)return;
obj.innerHTML=ajax.responseText;
// load any scripts
var s=obj.getElementsByTagName('script');
for(var i=0;i<s.length;++i)window.eval(s[i].innerHTML); // <-- bad
}
ajax.open("GET",url,true);
ajax.send(null);
}