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 :

Modification dynamique d'un .css en JS


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut Modification dynamique d'un .css en JS
    Bonjour,

    Dans un module Firefox je voudrais modifier dynamiquement un ficher.css associé.
    - J'arrive bien à attribuer dynamiquement une classe existante sur la textbox.
    - Je n'arrive pas à récupérer la classe dans le fichier.css pour la modifier :

    La textbox dans le fichier.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <xul:textbox anonid="findbar-textbox"
    	class="textbox findbar-find-fast"
    	oninput="updatecount(true);"
    	tooltiptext="&findbar-textbox.tooltip;"
    	xbl:inherits="flash"/>
     
     
    <xul:checkbox anonid="start-word"
    	class="findbar-start-word tabbable"
    	label="&start-word.Checkbox.label;"
    	dir="reverse"
    	accesskey="&start-word.Checkbox.accesskey;"
    	tooltiptext="&start-text.Checkbox.tooltip;"
    	oncommand="startWord(true);"
    	disabled="true"/>

    Le fichier.css
    Code css : 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
    /* findbar-textbox */
     
    .textbox {
      -moz-binding: url('chrome://CtrlF/content/binding.xml#findbar-textbox');
      border-radius: 3px;
      border-style: solid;
      border-color: #73B3FF;
      border-width: 1px;
      background-image: -moz-linear-gradient(to top, #FFFF99, #FFFFFF);
      margin: 0px;
    }
     
    .textbox-startWord-col {
    	 background-image:    -moz-linear-gradient(to right, #CC66CC, #FFFFFF);
    }
     
    .textbox-endWord-col {
    	 background-image:    -moz-linear-gradient(to left, #CC66CC, #FFFFFF);
    }

    La méthode :
    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
    <method name="startWord">
    	<parameter name="aEnable"/>
    	<body><![CDATA[
    		CtrlF.log('DUF Binding.xml startWord method');
    		var color = Components.classes["@mozilla.org/preferences-service;1"]
            	 .getService(Components.interfaces.nsIPrefBranch)
            	 .getCharPref("ui.textHighlightBackground");
           		if (this.getElement("start-word").checked) {
    			this.getElement("start-word").style.color = color;	
    			this.getElement("findbar-textbox").classList.add("textbox-startWord-col");							
    		}	else {
    			this.getElement("start-word").style.color = '#000000';
    			this.getElement("findbar-textbox").classList.remove("textbox-startWord-col");
    		}
    		// jusque là c'est OK.  Après je ne sais pas récupérer la classe
    		var myObject = document.getElementById("textbox");  
       		CtrlF.log('DUF Binding.xml myObject='+ myObject +'-=');
       		var getStyle = document.styleSheets.item("textbox");
       		CtrlF.log('DUF Binding.xml myObject='+ getStyle +'-=');
    	]]></body>
    </method>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var myObject = document.getElementById("textbox");  
     CtrlF.log('DUF Binding.xml myObject='+ myObject +'-=');  RETOURNE NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var getStyle = document.styleSheets.item("textbox");
    CtrlF.log('DUF Binding.xml myObject='+ getStyle +'-='); Là J'AI BIEN un STYLE MAIS JE NE SAIS PAS COMMENT L'UTILSER
    J'ai fait pas mal d'essais, j'ai trouvé quelques exemples sur du html, xml classique... qui semblent fonctionner, la doc xul de mozilla n'est pas très étendue sur le sujet : 1 2 3 ... rien de tout çà fonctionne puisque je n'arrive même pas à récupérer la classe !

    A terme je voudrais modifier dynamiquement .textbox-startWord-col & .textbox-endWord-col

    MERCI D'avance !

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je ne vois aucun intérêt à changer dynamiquement le CSS
    il suffit de récupérer tous les élements ayant une classes pour leur en ajouter ou en supprimer une autre.

    donc en créant statiquement la classes et en changeant les liens entre les éléments et les classes ça fonctionne.

    tu peux parcourrir le tableau document.styleSheets
    l'attribut href permet de savoir quelle est la feuille de style que tu manipule.

    chaque cssstyleSheet contient un tableau cssRules
    chaque règle corespond à un selecteur selectorText
    ce qui te permet de repérer test classes '.vBulletin_editer'
    la règle contient un membre tyle qui contient tous les attibuts css

    A+JYT

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    MERCI pour ta réponse sekaijin,
    Effectivement entre temps j'ai trouvé comment jouer avec l'ajout/suppression de classe !
    Je suis nul en anglais et interprète souvent de travers ce que je lis !!!
    @+ probablement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Splash] Modification dynamique d'un TLabel
    Par Kerod dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/03/2006, 02h09
  2. modification dynamique
    Par creale10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/02/2006, 09h29
  3. [PostgreSQL] [PostGreSQL] menu dynamique php-postgre-css
    Par tyrann dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/11/2005, 17h23
  4. Modification dynamique de la couche alpha
    Par Daedar dans le forum OpenGL
    Réponses: 6
    Dernier message: 22/10/2005, 14h22
  5. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49

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