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

Bibliothèques & Frameworks Discussion :

Remplir l'éditeur via javascript [TinyMCE]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut Remplir l'éditeur via javascript
    Bonjour ,

    Comment puis-je mettre un texte dans un éditeur tinyMCE via javascript ?!
    J'ai essayé pas mal de solutions sur le net , mais toujours pas résultats (l'éditeur est toujours vide) et firebug me fournit une erreur "tinyMCE.get is not a function". malgré que le syntaxe est correcte à ce que j'ai vu ici http://tinymce.moxiecode.com/wiki.ph...tor.setContent

    Voici un morceau de code :
    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
    <html>
    <head>
    <script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    	tinyMCE.init({
     
    		mode : "exact",
    		theme : "advanced",
    		elements : "text",
    		language : "fr"	
    		});
     
     
    tinyMCE.get('text').setContent('<span>test</span>'); // ici le code pour insérer du texte
    </script>
    </head>
    <body>
    	<textarea name="text" id="text" ></textarea>
    </body>
    </html>
    Merci beaucoup.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Salut,

    ton textarea se "transforme" t-il en éditeur tinyMCE ou pas ?

    Car, à vue de nez, je dirais qu'en fait, tu tentes d'initialiser ton éditeur tinyMCE sur un textarea qui n'existe pas encore dans le document (le navigateur lit et interprête le code dans l'ordre de la page, et ton javascript s'exécute visiblement avant que ton textarea ne soit chargé par le navigateur), la fonction pour mettre à jour le contenu de l'éditeur ne fonctionne pas non plus puisque l'éditeur n'est pas véritablement initialisé.

    Il faut pour cela que tu indiques au navigateur que tes instructions s'exécutent une fois le document chargé.

    Voici un exemple de code qui te permet d'initialiser ton éditeur tinyMCE une fois le document entièrement chargé :
    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 addEvent(obj,event,fct)
    {
            if (obj.attachEvent)
                    obj.attachEvent('on' + event,fct);
            else obj.addEventListener(event,fct,true);
    }
     
    function initTinyMCE(){
       tinyMCE.init({
       		mode : "exact",
       		theme : "advanced",
       		elements : "text",
       		language : "fr"	
       		});
     
       tinyMCE.get('text').setContent('<span>test</span>'); // ici le code pour insérer du texte
    }
     
    addEvent(window,"load",initTinyMCE);
    Ou si tu utilises un framework, genre jQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function initTinyMCE(){
       tinyMCE.init({
       		mode : "exact",
       		theme : "advanced",
       		elements : "text",
       		language : "fr"	
       		});
     
       tinyMCE.get('text').setContent('<span>test</span>'); // ici le code pour insérer du texte
    }
     
    $(document).ready(initTinyMCE);
    A+

  3. #3
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut
    Merci pour ton aide.

    Si , j'ai mis mon champs textarea
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea name="text" id="text" ></textarea>
    et mon éditeur apparait bien , il fonctionne mais toujours j'ai le même problème même avec jquery , vraiment ça me pose toujours un problème même si le truc parait simple.
    Voici mon code avec jquery si dessous
    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
    <html>
    <head>
    <script src="jquery-1.2.3.min.js"></script>
    <script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    	tinyMCE.init({
    		mode : "exact",
    		theme : "advanced",
    		elements : "text",
    		language : "fr"	
    		});
     
    jQuery(document).ready(function($) {
    	tinyMCE.get('text').setContent('<span>test</span>'); // ici le code pour insérer du texte
    });
     
    </script>
    </head>
    <body>
    	<textarea name="text" id="text" ></textarea>
    </body>
    </html>
    j'ai essayé encore d'appeler le document .ready à la fin de la page (après le textarea) même si ça parait inutile car on utilise le document.ready
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Est-ce que le tinyMCE.get("...") te renvoie bien une instance tinyMCE ?

    Que donne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(tinyMCE.get('text'));
    dans ton document.ready ? undefined ou [object Object] ?

  5. #5
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut
    Justement , ça n'affichera pas une alerte javascript , mais plutôt une erreur avec firebug "tinyMCE.get is not a function" ,
    je suis entrain de chercher maintenant comment avoir une instance de l'objet tinyMCE pour essayer d'appeler la fonction get avec lui !!! peut être que ça résoudra le problème.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Et dans firebug, si tu ajoutes un espion dans la partie "script" sur "tinyMCE", qu'obtiens-tu ?

    Il semblerait que ton objet tinyMCE soit écrasé par un autre objet ne possédant pas de méthode get ? à moins que ce soit un problème de scope ?

  7. #7
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut
    Si je met "alert(tinyMCE.get('text'));" dans la partie espion ça m'affiche l'erreur "TypeError: tinyMCE.get is not a function" , tandis si je met seulement "alert(tinyMCE);" ça affichera une alerte [objet Object] ce qui signifit que l'objet existe bien.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Mets juste tinyMCE dans la partie espion, pour inspecter l'objet, ça pourra peut-être t'aider à savoir quel est cet objet qui ne possède pas de méthode "get"...

  9. #9
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut
    c'est un objet de l'éditeur tinyMCE ,c'est bien l'objet demandé mais toujours le meme problème ,.

    En tout cas merci encore de ton aide ne pert pas beaucoup de temps , je vais l'abandonner un peu ensuite je reviendrai pour refaire mes recherche car on dit que si une truc pérsiste beaucoup vaux mieux se reposer ensuite réssayer !!!

    peut etre que je la trouvera.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  10. #10
    Membre régulier Avatar de betadev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 94
    Points : 94
    Points
    94
    Par défaut
    Voooila , enfin j'ai trouvé une solution mais ce n'est pas pro :
    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
    <html>
    <head>
    <script src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="tiny_mce/jscripts/tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    	tinyMCE.init({
    		mode : "exact",
    		theme : "advanced",
    		elements : "text"
    		});
    </script>
    </head>
    <body>
    	<textarea name="text" id="text" ></textarea>
    </body>
    </html>
    <script>
    setTimeout("tinyMCE.get('text').setContent('<span>texxxte de test</span>') ;",1000);
    </script>
    ça pourra être mieu si on mettre le code pour remplir le tinyMCE après l'exécution de tout le javascript , mais je ne sait pas comment faire avec jquery , ça ne se fera pas avec document.reday

    En tout cas c'est résolu avec cette solution.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    La programmation ce n'est pas de la magie , c'est simplement de la logique

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Symfony 2.8
    Inscrit en
    Mai 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Symfony 2.8

    Informations forums :
    Inscription : Mai 2016
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Je ouvre le sujet car j'ai eu le même problème, si vous etes comme moi et que vous utilise un framwork telque symfony2.8 dans lequel vous avez défini au préalable les configuration TinyCME

    vous pouvez juste dans votre script (jquery)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tinyMCE.get('text').setContent('<span>votre code html a insérer dans le textArea</span>') ;
    je précise que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get('text') // text est le name de votre champs html qui est dans votre textArea
    Et normalement il va l'inserer directement. sans besoin d'utiliser le setTimeOut

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

Discussions similaires

  1. Remplir un tableau via Javascript & Action Controller
    Par Invité dans le forum ASP.NET MVC
    Réponses: 5
    Dernier message: 21/06/2013, 14h03
  2. Réponses: 3
    Dernier message: 09/07/2009, 10h25
  3. [DOM] Comment remplir un champ de type array via Javascript ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/04/2008, 12h50
  4. [WebForms][2.0]Accéder aux élément DropDownlist via Javascript
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/10/2005, 15h01
  5. Réponses: 6
    Dernier message: 04/07/2005, 11h32

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