IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

innerHTML et eval...


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    Citation Envoy� par GregPeck
    Cette fonction ne clone pas les sous �l�ments... si par exemple j'essai de cloner un tr, je n'ai aucun td (dans childNodes) dans l'�l�ment clon�, normal ?
    euh ben si elle est cens� le faire.
    Enfin sous firefox �a marchera c'est sur, sous ie, y a des bugs
    par exemple apparement ca marche pas sur un <option> dans ie
    Mais sur un tableau �a devrais marcher.
    En fait c'est addChild qui fais le recursif et qui clone element par element.

    ie va peut etre pas aimer hasAttributes() dans clone, tu peux le remplacer par :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if(elem.attributes.length > 0)
    Citation Envoy� par GregPeck
    Merci encore, tu m'a fait d�couvrir des trucs excellent en javascript, je m'�clate, je comprend maintenant beaucoup mieux la force de js !
    Oui en se plongeant un peu dans le cambouis de js, on devient vite accro car on se rend compte de sa r�elle puissance

  2. #2
    Membre chevronn� Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par d�faut
    Citation Envoy� par GregPeck
    C'est bon j'ai compris l'int�ret de addChild et de ses appels r�cursifs
    Citation Envoy� par siddh
    En fait c'est addChild qui fais le recursif
    Comme quoi j'avais bien compris

    IE commence � me brouter s�vere et le probl�me c'est que je ne vais pas asser souvent v�rifier que le code fonctionne aussi sous IE. Je suis souvent oblig� de faire une grande marche arri�re, c'est lourd..
    A+

  3. #3
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    Citation Envoy� par GregPeck
    IE commence � me brouter s�vere et le probl�me c'est que je ne vais pas asser souvent v�rifier que le code fonctionne aussi sous IE. Je suis souvent oblig� de faire une grande marche arri�re, c'est lourd..
    A+
    +100

    pareil pour moi

  4. #4
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    Avez vous trouver comment rendre cette fonction compatible avec IE car �a fonction bien sous FF mais aucun r�sultat avec IE

  5. #5
    Membre chevronn� Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par d�faut
    Tu parle des fonctions addChild et clone ?

    Si oui, je les ai tellement modifier qu'elles ne ressemble plus au code d'origine (d'ailleurs elle ne ressemble plus � rien ). Mais c'est peux �tre � cause de ce bug que �a ne fonctionne pas:

    http://javascript.developpez.com/faq...M#DOMIEFirefox

    Et voici un nodecleaner:

    http://www.developpez.net/forums/vie...863087#1863087

  6. #6
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    euh ca marche avec ie normalement,
    le probl�me doit venir d'ailleurs mais effectivement �a peut pas faire de mal de passer au node cleaner

  7. #7
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    En fait je pense que c'est parce que je charge mal le fichier XML
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    ...
    else if (window.ActiveXObject) {
                this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    			this.xmlDoc.onreadystatechange = function() { if (this.xmlDoc.readyState == 4) this.loaded = true; }
    		    this.xmlDoc.load(url);
    }
    Avec �a je peut acc�der aux donn�es mais les fonction clone et addChild ne semble pas fonctionner et j'ai l'erreur
    'this.xmlDoc.readyState' a la valeur Null ou n'est pas un objet
    J'ai aussi essay� comme �a
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    else if (window.ActiveXObject) {
          		try {
                    this.xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                }
                this.xmlDoc.onreadystatechange = function() { if (this.xmlDoc.readyState == 4) this.loaded = true;}
                this.xmlDoc.open('GET', url, true);
    Mais au chargement de la page j'ai une boite de dialogue avec Object Error

  8. #8
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    euh tu r�cup�re jamais le responseXML ?
    http://siddh.developpez.com/articles/ajax/

  9. #9
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    Ca change du sujet initial mais la discussion a d�j� commenc� ici donc j'expose mon probl�me...

    En fait je n'arrive pas � placer le responseXML voici comment mon code se pr�sente: j'ai deux classes, une qui s'occupe de parser un fichier XML c'est aussi cette classe qui s'occupe de charger le fichier, l'autre classe elle traite les donn�es en prenant en param�tre l'objet cr�� par la classe pr�c�dente...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    var news   = new xmlParser();
    var post   = new xmlManager(news);
     
    news.loadXML('./news.xml');
    ...
    <body onload="post.buildNews()">
    ...
    loadXML :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    function loadXML(url)
    {
    	/* chargement du fichier XML */
    	try {
    		// navigateur basé sur Gecko
    		if (document.implementation && document.implementation.createDocument)
    		{
    			this.xmlDoc = document.implementation.createDocument('', 'doc', null);
    			this.xmlDoc.load(url);
    		// à l'aide de lobjet XMLHTTPRequest
    		} else if (window.XMLHttpRequest) {
          		this.xmlDoc = new XMLHttpRequest();
          		this.xmlDoc.overrideMimeType('text/xml'); 
          		this.xmlDoc.onreadystatechange = function() { if (this.xmlDoc.readyState == 4) this.loaded = true; }
          		this.xmlDoc.open('GET', url, true);
          		this.xmlDoc.send(null);
          	// ActiveX pour Internet Explorer
          	} else if (window.ActiveXObject) {
                try {
    				this.xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			this.xmlDoc.onreadystatechange = function() { if (this.xmlDoc.readyState == 4) this.loaded = true; }
    		    this.xmlDoc.open('GET', url, true);
          		this.xmlDoc.send(null);
    		}
    	} catch (e) {
    		alert(e);
    		return false;
    	}
    	return true;
    }
    Il me faut donc xmlDoc comme �tant un objet XML ce que me retourne this.xmlDoc = document.implementation.createDocument('', 'doc', null); par contre les autres test me retourne un objet xhr dans lequel se trouve l'objet XML qui m'int�resse responseXML...

    Jusque l� je ne vous apprend rien ...
    Le probl�me c'est que dans cette fonction responseXML est null et d'apr�s ce que j'ai pu constater il ne se remplit que lorsque je sort de la classe ou un truc du genre...

    Pour r�sumer, responseXML est vide lors du chargement mais est remplit lorsque j'arrive � la fonction buildNews de la classe xmlManager !!! Du coup lors du chargement, je ne peux pas faire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    this.xmlDoc = this.xmlDoc.responseXML;
    vu que celui-ci est vide...

    J'esp�re que vous avez r�ussit � me suivre ...

  10. #10
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    hum, je voit deja pas trop a quoi ca sert de faire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    if (document.implementation && document.implementation.createDocument)
          {
             this.xmlDoc = document.implementation.createDocument('', 'doc', null);
             this.xmlDoc.load(url);
          // à l'aide de lobjet XMLHTTPRequest
          }
    Ensuite, pourquoi mettre deux onreadystatechange diff�rents ?

    Et c'est justement a cet endroit l� que tu vas r�cup�rer le responseXML.
    Enfin tu vas meme pas lui affecter puisque le responseXML est d�ja dedans !!!!

  11. #11
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    Mais comment faire apr�s pour acc�der aux fonctions de mon parseur afin de traiter le fichier???
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function xmlParser()
    {
    	/* méthodes de la classe */
    	this.loadXML 				  = loadXML;					// chargement du fichier XML
    	this.clean 					  = clean;						// supprime les espaces du fichier XML
    	this.countNode				  = countNode;					// compte le nombre de noeud
    	this.getRoot 				  = getRoot;					// obtenir la racine du document
    	this.getParent 				  = getParent;					// obtenir le parent d'un noeud
    	this.getChild 				  = getChild;					// obtenir les fils d'un noeud
    	this.getNode 				  = getNode;					// obtenir les noeuds selon la balise
    	this.getNodeName 			  = getNodeName;				// obtenir le nom du noeud
    	this.getNodeValue 			  = getNodeValue;				// obtenir la valeur du noeud
    	this.getAttributeValue 		  = getAttributeValue;			// obtenir la valeur des attributs d'un noeud
    	this.findNodeByValue 		  = findNodeByValue;			// recherche un noeud par sa valeur
    	this.findNodeByAttributeValue = findNodeByAttributeValue;	// recherche un noeud par la valeur de son attribut
     
    	/* membres publiques */
    	this.xmlDoc;												// objet contenant le fichier XML
    	this.loaded = false;										// état de chargement du fichier XML
    }
    Je ne peux pas faire xmlDoc.responseXML.getNode(); par exemple...
    Je commence � avoir mal � la t�te moi...

  12. #12
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    pour l'exploitation du responseXML, c'est le documentElement du responseXML qu'il faut manipuler avec le DOM

  13. #13
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    J'arrive maintenant � exploiter le fichier XML avec xhr mais une derni�re question car je trouve que la technique employ� "pas tr�s propre"...

    En fait, je ne vois pas quand responseXML se remplit or � la sortie de ma fonction loadXML je ne veux pas un objet xhr mais un objet xml donc puisqu'il est remplit dans la classe qui traite le fichier je fais...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    obj.xmlDoc = obj.xmlDoc.responseXML.documentElement;
    mais j'aurrais pr�f�r� que cela soit fait dans la fonction loadXML...

    J'ai essay�
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    this.xmlDoc.onreadystatechange = function() {
        if (this.xmlDoc.readyState == 4) this.xmlDoc = this.xmlDoc.responseXML.documentElement;
    };
    dans la fonction loadXML mais �a ne marche pas et me retourne toujours xmlDoc comme un objet xhr...

    Comment faire pour avoir un objet xml � la sortie de ma fonction loadXML???

  14. #14
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    tu ne peux pas car c est une discussion asynchrone !

    sinon tu peux faire une discussion synchrone qui bloquera le traitement tant que tu n'as pas eu la r�ponse.

    Auquel cas, plus besoin du onreadystatechange.

    Tu construit ton xhr, tu envoie la requete en lui passant false en 3eme argument du open et � la ligne en dessous tu fais un return du responseXML.documentElement

  15. #15
    Membre confirm�

    Inscrit en
    Mars 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par d�faut
    Tr�s bien merci beaucoup de ton aide...
    Mais l� �tant en synchrone, cela veut dire que ma page html arr�tera de se charger tant que le fichier XML n'aura pas finit de se charger???
    Je ne pense pas que �a sera un probl�me sauf si le fichier XML est tr�s gros...

  16. #16
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    Tu as tout compris

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 2 sur 2 Premi�rePremi�re 12

Discussions similaires

  1. [POO] Fonction eval() - innerHTML
    Par allian dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 06/03/2009, 08h23
  2. Existe-t-il une fonction Eval() sous Delphi ?
    Par Hell dans le forum Langage
    R�ponses: 5
    Dernier message: 20/12/2004, 17h45
  3. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    R�ponses: 8
    Dernier message: 10/09/2004, 11h23
  4. [String] �quivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    R�ponses: 5
    Dernier message: 01/09/2004, 08h42
  5. [langage] eval
    Par Quaker dans le forum Langage
    R�ponses: 5
    Dernier message: 21/07/2004, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo