Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2011, 11h46   #1
Invité de passage
 
Inscription : juillet 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 6
Points : 0
Points : 0
Par défaut Utilisation du DOM et enregistrement de fichier

Bonjour,


Je suis en train de réaliser un gadget Windows qui doit me permettre de stocker dans un fichier XML mon temps de travail par jour. J'éprouve quelques difficultés liées à l'enregistrement du fichier sur le disque, c'est pourquoi je sollicite votre aide. Le langage à utiliser pour parvenir à mes fins est le javascript.

Contrairement à d'habitude, on se focalisera sur un code destiné à internet explorer... voilà où j'en suis, j'explique où je bloque après :

Dans le onload de la page, j'appelle la fonction d'initialisation. Elle permet de créer l'objet qui va parcourir le XML :
Code :
1
2
3
4
5
6
7
8
9
10
 
function init()
{
	if (window.ActiveXObject)
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	xmlDoc.async=false;
	xmlDoc.load("C:/statistiquesDeTravail.xml");
}
Côté HTML, la méthode d'enregistrement est appelée au clique sur un bouton.
Code :
1
2
 
<input class="bouton" type="button" onclick="sauvegarder()" value="Sauvegarder" />
voilà la fonction d'enregistrement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
function sauvegarder()
{
 
	// je vérifie dans un premier temps  si le fichier existe déjà. S'il n'existe pas, je le crée
	var fso, object;
	fso = new ActiveXObject("Scripting.FileSystemObject");
	FileExist = fso.FileExists(fichierStockage);
	if(!FileExist)
	{
		// création du fichier
		object = fso.CreateTextFile(fichierStockage, false);
		// ajout de la trame qui doit servir de contenant pour les différentes informations
		object.write("<?xml version='1.0' encoding='UTF-8'?>\n");
		object.write("<racine>\n");
		object.write("</racine>\n");
 
	}
	// on ferme les ressources ouvertes
	fso=null;
	object.Close();
	// on se place sur la racine du document
	var noeuds = xmlDoc.getElementsByTagName("racine")[0];
 
	// on crée la nouvelle balise à ajouter au fichier XML
	var nouveauTravail = xmlDoc.createElement("travail");
	nouveauTravail.setAttribute("ref", jourCourant);
	noeuds.appendChild(nouveauTravail);
 
	//
	//
	// c'est ici qu'il doit manquer quelque chose...
	//
	//
}
voilà, maintenant si je fais :
Code :
1
2
 
document.getElementById("graph").innerHTML = noeuds.getElementsByTagName("travail")[0].getAttribute("ref");
La div « graph » prend bien la valeur du jour, mais le fichier XML reste désespérément vide... AppendChild doit ajouter le noeud en mémoire, mais pas dans mon fichier. Auriez vous une solution pour réussir à enregistrer ces nouveaux noeuds dans mon fichier ?

J'en profite pour poser une autre question liée et qui doit avoir la même réponse à mon avis : si je fais une modification de noeud existant, je suppose que la modification sera elle aussi faite au niveau mémoire, et qu'il faudra enregistrer à coté, comme pour l'ajout de nouveau noeud ?

Merci beaucoup pour toute l'aide que vous m'apporterez.

Alexandre
alexaptor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 13h50   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 071
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 071
Points : 45 202
Points : 45 202
Code :
fso = new ActiveXObject("Scripting.FileSystemObject");
Sous IE ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 14h13   #3
Invité de passage
 
Inscription : juillet 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 6
Points : 0
Points : 0
Citation:
Envoyé par SpaceFrog Voir le message
Sous IE ?
Je ne comprend pas bien la question.

Cette portion de code me permets de savoir le fichier existe sur le disque.
Oui c'est compatible Internet Explorer sinon.

Si cette instruction vous laisse perplexe, et que vous avez mieux, je suis preneur , bien qu'elle marche et ne fasse pas partie de mon souci d'enregistrement.

Alexandre
alexaptor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 14h15   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 071
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 071
Points : 45 202
Points : 45 202
Ben non seulement c'est compatible IE mais c'est exclusif IE ...

Javascript n'est pas fait pour sauvegarder localement des fichiers.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 14h34   #5
Invité de passage
 
Inscription : juillet 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 6
Points : 0
Points : 0
Citation:
Envoyé par SpaceFrog Voir le message
Javascript n'est pas fait pour sauvegarder localement des fichiers.
je m'attendais à cette réponse... Je sais que se n'est pas prévu pour, mais c'est possible, j'y suis arrivé et j'ai obtenu des premiers résultats :

exemple de contenu généré avec javascript (dans mon fichier local) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<?xml version='1.0' encoding='UTF-8'?>	
	<travail ref="30/10/2011">
		<dureeTravail>480</dureeTravail>
		<dureePause>60</dureePause>
		<debut>540</debut>
		<fin>1080</fin>
		<heureTravail>08:00</heureTravail>
		<heurePause>01:00</heurePause>
		<heureDebut>09:00</heureDebut>
		<heureFin>18:00</heureFin>
	</travail>
	<travail ref="01/11/2011">
		<dureeTravail>450</dureeTravail>
		<dureePause>90</dureePause>
		<debut>540</debut>
		<fin>1080</fin>
		<heureTravail>07:30</heureTravail>
		<heurePause>01:30</heurePause>
		<heureDebut>09:00</heureDebut>
		<heureFin>18:00</heureFin>
	</travail>
	<travail ref="02/11/2011">
		<dureeTravail>420</dureeTravail>
		<dureePause>60</dureePause>
		<debut>540</debut>
		<fin>1020</fin>
		<heureTravail>07:00</heureTravail>
		<heurePause>01:00</heurePause>
		<heureDebut>09:00</heureDebut>
		<heureFin>17:00</heureFin>
	</travail>
Maintenant voilà ce que je veux :

Code :
1
2
3
4
5
6
7
8
9
 
<?xml version='1.0' encoding='UTF-8'?>
<racine>
//
// le contenu ici, ajout de nouveaux noeuds à cet endroit.
// AppendChild n'enregistre pas les données dans mon fichier, 
// mais seulement en mémoire
//
</racine>

J'ai bien précisé Internet Explorer car pour les gadgets Windows, c'est ce qui est utilisé comme norme, c'était juste pour mieux cibler les réponses.

Alexandre
alexaptor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 08h29   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 071
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 071
Points : 45 202
Points : 45 202
Ha ok...
Désolé je ne penche pas du coté sombre.
Et l'exclusif IE n'est pas ma tasse de thé.
Pour moi ce genre de manip est et doit rester hors des compétences de javascript.
Je ne te serais donc d'aucune utilité.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web