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 :

Ajouter un fichier CSS � un DOM


Sujet :

JavaScript

  1. #1
    Membre � l'essai
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2022
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Par d�faut Ajouter un fichier CSS � un DOM
    Bonjour,

    Je suis en train de faire une application avec les caract�ristiques suivantes:
    - page statique
    - pas de serveur (donc pas de PHP, AJAX)

    Le but de mon application est de sortir au format texte une page web.
    J'ai cr�� un DOM autre que celui de la page active.

    Je voudrais rajouter un fichier CSS � ce DOM.

    J'ai cod� un addCharset qui fonctionne:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function addCharset(dest, text)
    {
        sendInfo("addCharset");
     
        let obj = doc.createElement("meta");
        obj.setAttribute("charset", text);
     
        dest.appendChild(obj);
    }
    Je voudrais faire la m�me chose avec un CSS:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function addCSS(dest, text)
    {
        logger("addCSS");
        logger(dest); // dest est un XMLDocument
        logger(text); // text est style.css
     
        let obj = dest.createElement("link");
        obj.setAttribute("rel", "stylesheet");
        obj.setAttribute("href", text);
        logger(obj);
     
        ********************
    }
    Que dois-je mettre � la place des '*' pour que �a fonctionne ?

    Merci,
    Cordialement,

  2. #2
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    avez-vous essay� avec "appendChild" ?

  3. #3
    Membre � l'essai
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2022
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Par d�faut appendChild test�
    Bonjour,

    Oui, lorsque je met appendChild, j'ai l'erreur suivante:

    Uncaught DOMException: Node.appendChild: Cannot have more than one Element child of a Document.
    Le DOM ressemble alors � la pi�ce jointe.

    Merci,
    Cordialement,
    Images attach�es Images attach�es  

  4. #4
    Membre � l'essai
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2022
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Par d�faut J'ai trouv� une solution
    Salut,

    Merci de m'avoir mis sur la piste de l'appendChild. Je l'avais essay�, mais comme il ne marchait pas, j'avais essay� plein d'autres trucs.
    Mais en revenant sur l'appendChild, j'ai fini par trouver...
    Pour l'instant, c'est pas tr�s joli, mais je vais essayer d'am�liorer.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function addCSS(dest, text)
    {
        sendInfo("addCSS");
        logger(dest); // dest est un XMLDocument
        sendInfo(text); // text est style.css
     
        let obj = dest.createElement("link");
        obj.setAttribute("rel", "stylesheet");
        obj.setAttribute("href", text);
        // sendObj(obj);
     
        dest.childNodes[0].childNodes[0].appendChild(obj);
    }
    Le premier 'childNodes[0]' est la balise 'html'.
    Le deuxi�me 'childNodes[0]' est la balise 'head'.

    Avant, c'est comme si je voulais ajouter une deuxi�me balise 'html'.

    Ce qui est �tonnant, c'est que je n'avais pas le probl�me avec le charset, �a m'a mis sur une mauvaise piste...

    Merci encore,
    Cordialement,

  5. #5
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    qu'utilisez vous pour g�n�rer l'objet "xmldocument" et pour r�cup�rer ensuite le r�sultat ?

  6. #6
    Membre � l'essai
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2022
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Par d�faut r�cup�ration document
    Salut,

    J'utilise:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    doc = document.implementation.createDocument(null, lang, null);
    et c'est ce 'doc' que j'utilise comme param�tre � addCSS.

    Cordialement,

  7. #7
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    tu peux aussi faire cela simplement en cr�ant une balise <style> que tu renseignes avec le code de ton CSS via un textContent et tu ajoutes celle-ci au <head> du document.

    En gros :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    const oStyle = document.createElement("STYLE");
    oStyle.textContent = tonTextCSS;
    document.querySelector("head").appendChild(oStyle);

  8. #8
    Membre � l'essai
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2022
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Par d�faut rep
    Salut,

    A cette �tape, je ne connais pas le contenu du fichier CSS.
    Je ne peux donc remplir la balise style...

    Mais j'ai quand m�me utilis� une partie de ta r�ponse.

    Merci.

    Finalement, j'ai fait comme �a:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function addCSS(doc, dest, filename)
    {
        sendInfo("addCSS");
        logger(doc); // doc est un XMLDocument
        logger(dest); // dest est un l'élément destinataire
        logger(filename); // filename est "style.css"
     
        let obj = doc.createElement("link");
        obj.setAttribute("rel", "stylesheet");
        obj.setAttribute("href", filename);
        // sendObj(obj);
     
        dest.appendChild(obj);
    }
    Et �a pas test�:

    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
    function addHeadCSS(doc, filename)
    {
        sendInfo("addHeadCSS");
        logger(doc); // doc est un XMLDocument
        logger(filename); // filename est "style.css"
     
        addCSS(doc, doc.querySelector("head"), filename);
    }
     
    function addStyle(doc, dest, text)
    {
        sendInfo("addStyle");
        logger(doc); // doc est un XMLDocument
        logger(dest); // dest est un l'élément destinataire
        logger(text); // text est style.css
     
        let obj = doc.createElement("style");
        obj.textContent = text;
        // sendObj(obj);
     
        dest.appendChild(obj);
    }
    Cordialement,

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [DOM] Ajouter un fichier XML dans DOM
    Par Flam dans le forum Biblioth�ques et frameworks
    R�ponses: 2
    Dernier message: 16/10/2009, 12h20
  2. [DOM] Ajout sur un fichier xml avec DOM
    Par karimoscapitated dans le forum Format d'�change (XML, JSON...)
    R�ponses: 0
    Dernier message: 30/12/2008, 22h34
  3. R�ponses: 6
    Dernier message: 04/06/2008, 10h48
  4. [DOM] [XSL] Convertir un fichier XML vers un fichier CSS
    Par Invit� dans le forum Biblioth�ques et frameworks
    R�ponses: 7
    Dernier message: 23/03/2007, 10h49
  5. ajout evenements dans le fichier CSS
    Par cosminutza dans le forum Mise en page CSS
    R�ponses: 2
    Dernier message: 20/11/2004, 14h50

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