2012-04-14 7 views
1

Laden habe ich eine Seite index.htmlWarum Alarm-Funktion funktioniert nicht, wenn sie mit 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> 

Und eine andere Seite genannt 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> 

ich es will ank alarmieren, wenn welcome.html wird über Ajax geladen, da die Alert-Funktion auf das Attribut body onload von welcome.html geschrieben wird

Antwort

0

Zunächst einmal ist der HTML-Code, den Sie einfügen möchten, nicht gültig. Es ist nicht nur fehlerhaft (kein Wurzelelement, kein Kopf, Titel außerhalb des Kopfes), es ist auch kein Dokumentfragment (was am meisten Leute zurückgeben, wenn sie HTML über AJAX laden).

So wird der Browser tut das gut es kann, dieStrippen aus den neuen <body>-Tag enthält. Da es entfernt wird, kann das Ereignis offensichtlich nicht ausgelöst werden.

Warum machst du das überhaupt? Sie haben bereits das Äquivalent zu onload - Sie verwenden es sogar, um den HTML-Code in Ihrem <div> an erster Stelle zu setzen. Mach einfach Sachen rein.

Randbemerkung: Wenn Sie denken, dass das Hinzufügen einer <script> über innerHTML funktioniert, hier ein paar Ratschläge: Es wird nicht.

Verwandte Themen