2012-04-14 2 views
1

У меня есть страница index.htmlПочему функция предупреждения не работает при загрузке с помощью AJAX

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Lufia</title> 
<script language="javascript" type="text/javascript"> 
function ajax() 
{ 

var xmlhttp; 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.onreadystatechange=function() 
    {if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    document.getElementById('mydiv').innerHTML=xmlhttp.responseText; 
    } 
    xmlhttp.open("GET",'welcome.html',true); 
xmlhttp.send(); 
} 
</script></head> 
<body> 


<button onclick="ajax();"></button><div id="mydiv"></div></body> 
</html> 

И еще одну страницу под названием welcome.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Lufia</title> 

<body onload="alert('ank');">welcome 
</body> 
</html> 

Я хочу, чтобы это предупредить, когда welcome.html АНК загружается через ajax, поскольку функция предупреждения записывается в атрибут bodyload on.html

ответ

0

Для начала HTML-код, который вы пытаетесь вставить, недействителен. Мало того, что он искажен (нет корневого элемента, нет головы, заголовка за пределами головы), но это не фрагмент документа (это то, что большинство люди возвращаются при загрузке HTML через AJAX).

Таким образом, браузер делает все возможное, в том числе , удаляя новый <body> тег. Так как он удаляется, событие, очевидно, не срабатывает.

Почему вы это делаете? У вас уже есть эквивалент onload - вы даже используете его, чтобы поместить HTML в свой <div> в первую очередь. Просто делайте что-нибудь там.

Боковое примечание: Если вы думаете, что добавление <script> через innerHTML будет работать, вот вам совет: это не так.

Смежные вопросы