11540 sujets

JavaScript, DOM et API Web HTML5

Pour introduire le probleme, voici un exemple avec qui, je galère en ce moment :
Je dois récupérer un script variable avec une requête AJAX renvoyé par Traitement.PHP

$.ajax({						
				url: 'Traitement.php',
				dataType: 'html',
				data: { Param1: Valeur1}, 
				error : function(resultat, statut, erreur){
					alert("Probleme innattendu");
				},						
				complete : function(resultat, statut){						
					// Si la balise script existe deja: la supprimer	
					if(document.getElementById ('Ajout_Script')) {
						document.getElementById ('Ajout_Script').parentNode.removeChild(document.getElementById('Ajout_Script'));
					}
					// Creer la balise script et l'ajouter au HEAD
					var Script_Var = document.createElement('script');	
					Script_Var.type = 'text/javascript';	
					Script_Var.id = "Ajout_Script";				
					var sText = document.createTextNode(resultat.responseText);
					Script_Var.appendChild(sText);
					document.getElementsByTagName('head').item(0).appendChild(Script_Var);				
				}
			});



Et voici l’erreur que me donne IE :
SCRIPT65535: Demande d'accès à la méthode ou aux propriétés inattendue.
Script_Var.appendChild(sText);


* Après, j’ai essayé avec ça (au lieu de appendChild) :
Script_Var.textContent = resultat.responseText ;
Mais là, le code est ajouté, mais , il n’est pas interpreté, il est considéré comme du texte statique !!
* Après, j’ai essayé avec ça :
Script_Var.innerHTML = resultat.responseText ;
 SCRIPT600: Erreur d'exécution inconnue
* Après, j’ai essayé avec ça :
Script_Var.text = resultat.responseText ;  Et la ça marche
Mais, je ne suis pas sur, si ça marche avec d’autres versions et d’autres navigateurs ;

Alors que dois-je faire mes amis , avant qu’ IE me rende fou !! Smiley sweatdrop

J’ai deux autres questions en relations :
1. Comment connaitre le navigateur d’une façon fiable avec Javascript :
Si Navigateur = IE alors { ………… }
Else { …………. }

2. Comment, avec le code, détecter qu’il y a erreur pour tester une autre méthode ; genre :
{ Methode1 :
Instruction1
Instruction2
….
} s’il y erreur alors { Methode 2 :

}



MERCI d’avance pour votre aide.
Smiley eyecrazy Smiley eyecrazy Smiley eyecrazy
J'ai trouvé une solution:

if (!Script_Var.appendChild) { Script_Var.appendChild(resultat.responseText); } else { Script_Var.text = resultat.responseText ; };



Que en dites-vous ?
Bonsoir, je vois que tu utilise jQuery pour la partie ajax. Pourquoi tu ne continue pas avec pour le parcours et la modification du DOM ?
Modérateur
Pas mieux, et surtout, pourquoi ne pas remplacer tout ce brouillon de code par:


  $.getScript("Traitement.php");


Qui me semble un poil plus propre…

Quant au fait de supprimer un script qui a déjà été executé, dans quel but? ça ne liberera même pas la mémoire…