AJAX et feuille html / javascript

[Résolu/Fermé]
Signaler
-
Messages postés
1022
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
-
Bonjour,

Voila mon probléme

je passe une feuille par le systéme AJAX contenant un script/javascript à l'intérieur
Manque de bol, le script ne fonctionne pas ; voila ma feuille que j'essaye de transmettre :

<input type="text" value="" />
<input type="button" value="test" onclick="test()" />
<script type="text/javascript">
function test(){
alert(document.getElementById('text').value);}
</script>

une idée ??

j'ai bien penser à faire une sorte de "parseur" javascript, avec du regex
ou j'ai tenter aussi un eval .. mais rien n'y fait !

4 réponses

Messages postés
28034
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
3 septembre 2021
7 958
Salut,

Ton input text n'a pas id="test".
Par conséquent, ceci est null :
(document.getElementById('text').value)

Essaye aussi ceci si besoin :
onclick="javascript:test();"

ton idée avais l'air d'être bonne ; mais elle ne marche pas !
Messages postés
28034
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
3 septembre 2021
7 958
Ceci marche parfaitement chez moi :

<html>
	<body>
		<input type="text" value="" id="test" />
		<input type="button" value="click me" onClick="test()" />

		<script type="text/javascript">
		function test()
		{
			alert(document.getElementById('test').value);
		}
		</script>
	</body>
</html>

Nop, toujours pas chez moi ....
je précise que cette feuille passe par Ajax,
et par conséquence elle est afficher dans une autre DIV , pas besoin de html > body

xhr.open('get','maPage.html',true);
xhr.onreadystate=function(){
elt.innerHTML=xhr.responseText;}
xhr.send(null);

etc ..
[resolu]

Voila la solution ... héhé,

navré de vous avoir déranger mais j'ai trouver ma solution tout seul

xhr.open('GET','mapage.html',true); 
xhr.onreadystate=function(){ 
if(xhr.readyState==4 && xhr.status==200){ 
insert(xhr.responseText);}} 
xhr.send(null); 

function insert(rep){ 
var elt = document.getElementById('maDiv'); 
elt.innerHTML=rep; 

// c'est ici le truc ! 
if(rep.match("<script","g")){ 
var scs = elt.getElementsByTagName('script'); 
for(var i in scs){ 
var script = document.createElement('script'),content; 
script.type="text/javascript"; 
content = scs[e].innerHTML; 
script.innerHTML=content; 
document.body.appendChild(script);} 
}
Messages postés
28034
Date d'inscription
mercredi 28 novembre 2007
Statut
Modérateur, Contributeur sécurité
Dernière intervention
3 septembre 2021
7 958
Ok, sorry Ajax en effet.
Parfait, bonne continuation.
Messages postés
1022
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
Eh oui, en Javascript, on ne peut pas faire :

element.innerHTML = "<script> ...";

Cela ne fonctionnera pas ! Il faut donc sortir le Javascript de la variable destinée à l'innerHTML.

;-)