Partage
  • Partager sur Facebook
  • Partager sur Twitter

queryCommandValue("Italic") ne fonctionne pas sur firefox

Iframe contentEditable >> WYSIWYG

Sujet résolu
    12 décembre 2009 à 22:57:06

    Bonjour tout le monde!!
    Voila ça fait plusieurs semaines que je planche sur ce problème. Partout où je cherche, je vois que mon code semble bon, mais pourtant cela ne fonctionne pas.
    Je suis en train de créer un WYSIWYG sous firefox, avec donc une iframe dont le contentEditable est passé à on. Tout cela fonctionne, j'arrive a mettre en forme mon texte comme je le souhaites.

    Mais le soucis vient lorsque je souhiate faire appel a la commande queryCommandValue avec certains paramètre. Avec par exemple FontSize, je n'ai aucun soucis mais par exemple avec Bold ou Italic cela me retourne toujours false...
    si je fais:
    alert(Boolean(ob.contentDocument.queryCommandValue("Italic")));
    

    ça m'affiche toujours false

    Une idée sur la question.???

    Merci de l'aide que vous pourrez m'apporter!!
    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2009 à 23:32:16

      Je sais absolument pas ce que c'est mais ça doit se rapporte aux propriétés CSS donc ça serait plus font-style et font-weight...
      Sachant qu'en JS, on a tendance à enlever les tirets et à mettre la lettre suivante en majuscule.
      Et si c'est pas ça, essaye avec un i minuscule.
      • Partager sur Facebook
      • Partager sur Twitter
        13 décembre 2009 à 0:30:22

        Merci de ta réponse.

        Il est vrai qu'en javascript ça se rapporte souvent aux propriétés CSS, voici une liste des commandes utilisables pour la fonction queryComandValue : http://www.mozilla.org/editor/midas-spec.html.
        Problème, elle ne fonctionnent apparemment pas toutes, dans ce cas je pose la question, comment fonctionnent les éditeurs WYSIWYG sous firefox pour indiquer quand le texte est en gras ou italique par exemple???
        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2009 à 0:34:58

          Mais sans la majuscule ça change rien ?
          Et au passage, ton truc s'écrit plus :
          alert(!!ob.contentDocument.queryCommandValue("Italic"));
          
          • Partager sur Facebook
          • Partager sur Twitter
            13 décembre 2009 à 10:26:15

            Merci de ta réponse.

            J'ai éssayé mais ça ne fonctionne pas non plus. Je ne sais pas a quoi servent ces deux ! :) .

            Avec ou sans majuscule ça ne change rien..
            • Partager sur Facebook
            • Partager sur Twitter
              13 décembre 2009 à 11:06:35

              En fait c'est peut-être qu'il le gère tout seul l'italic...

              Citation : MDC

              If there is no selection, the insertion point will set italic for subsequently typed characters.
              If there is a selection and all of the characters are already italic, the italic will be removed. Otherwise, all selected characters will become italic.

              • Partager sur Facebook
              • Partager sur Twitter
                13 décembre 2009 à 11:21:17

                En fait tu as deux fonctions principales:
                ob.contentDocument.execCommand('Italic')
                

                Qui va mettre le texte sélectionné en italique. Si aucun texte n'est sélectionné, il va mettre les balises pour mettre le texte en italique a l'endroit du pointeur pour les prochains caractères qui seront tapés. C'est ce que veux dire le morceau de texte que tu as copié.
                ExecCommand insère les balises suivantes:
                <span style="font-style: italic;"></span>
                


                Ensuite il y a:
                ob.contentDocument.queryCommandValue('Italic')
                

                qui elle devrait retourner un booléen pour savoir si la sélection ou l'endroit où se trouve le curseur est en italique ou non. Ce qu'elle ne fait pas pour le cas précis, mais qui fonctionne dans d'autre cas..

                • Partager sur Facebook
                • Partager sur Twitter
                  13 décembre 2009 à 11:38:12

                  Essaies avec un i minuscule.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 décembre 2009 à 11:59:15

                    Citation : Tiller

                    Essaies avec un i minuscule.


                    Déjà dit :)
                    Sinon, je pense que ça fait ça parce que italic, il le gère tout seul...
                    Donc au lieu de faire ton if, si c'est le bouton italic sur lequel on a cliqué, fais juste le exec.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 décembre 2009 à 12:15:24

                      C'est ce qui se passe pour le moment, je ne fais que le exec lorsque l'on clique sur le bouton (ici l'image mais ça change rien) pour mettre en italique.

                      Ce que je veux maintenant c'est aller encore plus loin et que après avoir saisi son texte par exemple et l'avoir mis en forme, si on clique à un endroit où le texte est en italique ça change l'image de l'italique dans la barre d'outils.
                      Mais pour se faire, il faut pouvoir récupérer l'état italique, ce qui ne fonctionne pas.

                      Merci de vos réponses.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 décembre 2009 à 12:20:14

                        Ah...
                        Sans majuscule ?
                        Joke :D
                        Nan, je sais pas...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 décembre 2009 à 12:30:35

                          Herudo, est-ce que t'as essayé en minuscule, car jamais t'as dit avoir testé !

                          I'm a boulet, you said it.

                          Mais bon, j'ai maté un autre WYSIWYG et ils utilisent obj.queryCommandValue("italic") et ça marche.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 décembre 2009 à 14:51:41

                            Citation : Tiller

                            Mais bon, j'ai maté un autre WYSIWYG et ils utilisent obj.queryCommandValue("italic") et ça marche.



                            Ben ouai moi aussi j'ai bien vu qu'ils faisaient comme ça, mais alors pourquoi ça marche pas avec moi :(
                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 décembre 2009 à 20:48:32

                              tu devrais utiliser queryCommandState à la place... en tout cas, c'est la solution que j'ai trouvé à notre problème après maintes recherches infructueuses...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 décembre 2009 à 9:06:47

                                Ha ouii, ça m'a pas l'air mal ça.

                                J'essaie ça ce soir :):)

                                Merci
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 décembre 2009 à 23:06:52

                                  de rien. alors ? ça a marché ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    25 décembre 2009 à 12:46:53

                                    Dsl j'ai pas eu le temps de tester plus tôt.

                                    En effet ça marche.

                                    Merci beaucoup!!
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    queryCommandValue("Italic") ne fonctionne pas sur firefox

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown