JS : passage de fonction à une fonction - HTML/CSS - Programmation
Marsh Posté le 15-11-2006 à 14:45:43
Il te faut surtout un vrai debugger, si t'as visual studio tu pourra y mettre des points d'arrêts... La gestion d'erreur de base n'est là que pour l'utilisateur lambda, pour les vrais développeurs ils faut d'autres outils à côté. C'est la même chose pour firefox, où il faut l'extension Venkman si on veut débugger du JS comme les vrais
Marsh Posté le 15-11-2006 à 14:55:40
J'ai téléchargé la DugBar pour IE et depuis ma fonction fonctione
Peut être qu'il y avait juste un problème de cache, bien que je le vide avant chaque nouveau test.
Merci !!
Marsh Posté le 15-11-2006 à 14:36:51
(Re) bonjour !
Dans un sujet précédent, j'ai écrit que je me suis sorti de mon problème précédent grâce à la possibilité qu'a Javascript de permettre de passer une fonction en paramètre d'une autre.
Cependant, j'ai un problème sous IE : 'undefined' a la valeur null ou n'est pas objet. Comme toujours, Microsoft nous propose une gestion d'erreur intuitive permettant de résoudre ses problèmes simplement, grâce à une interception avancée des erreurs (mmm ça sent l'ironie à plein nez).
Sous Firefox, aucun problème rencontré, tout fonctionne bien et la console d'erreur reste vierge.
Voici ce que je fait :
function js_local_recuperer_conges_saisis(date_debut, date_fin)
{
// Cette méthode récupère les congés déjà saisis pour notre salarié et notre société
function js_local_methode_traiter_conges(chaine_conges_saisis)
{
// Si la réponse est nulle on stoppe
if(chaine_conges_saisis == "" )
{
return;
}
// Sinon on récupère les données
var tab_conges_recuperes = chaine_conges_saisis.split("|" );
// On passe tous les congés récupérés au tableau des congés
for(var i=0; i < tab_conges_recuperes.length; i++)
{
tab_temp_local = tab_conges_recuperes[i].split(":" );
tab_conges.push(tab_temp_local);
}
}
// On demande au serveur de nous returnés les congés saisis et on lui passe le traitement a effectuer dessus
js_client_serveur("paie_saisie_conges_ajax.php","action=2&date_debut="+date_debut+"&date_fin="+date_fin,"POST",0,js_local_methode_traiter_conges);
}
La fonction js_client_serveur :
function js_client_serveur(script, donnees, methode, mode, fonction)
{
// Déclaration de notre objet ajax
var xhr_object = null;
// On déclare la variable de résultat
var resultat = null;
// Contrôle de la compatibilité navigateur
if(window.XMLHttpRequest)
{
// Firefox
xhr_object = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
// Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
}
else
{
// XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
return;
}
// Si on a choisi le mode synchrone
if(mode == 1)
{
xhr_object.open(methode, script, false);
if(methode.toUpperCase() == "POST" )
{
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
}
xhr_object.send(donnees);
resultat = xhr_object.responseText;
}
else
{
xhr_object.open(methode, script, true);
xhr_object.onreadystatechange = function()
{
if(xhr_object.readyState == 4)
{
resultat = xhr_object.responseText;
if(typeof(fonction) == "function" )
{
fonction(resultat);
}
}
}
if(methode.toUpperCase() == "POST" )
{
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
}
xhr_object.send(donnees);
}
// Retour du résultat
return resultat;
}
Avez-vous une idée de ce qui peut déranger IE ?
Merci.