Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

235 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   920 Visites
   Note INTERNET : 16.5
    (12 Votants)
   0 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2004 - Note de Synthèse Stage
Editeur HTML
[15 mn de lecture - paru le 11/5/2003 - Public : Confirmé]

Auteur

tigrouMarc FALESSE
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2004

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

2.0 Fonctions execCommand


Fonctions execCommand Depuis Internet Explorer 5.5 (dans sa version windows) dispose de la fonction non-standard execCommand qui permet d'accéder à des fonctions d'édition avancées sans avoir à les programmer soi-même. Il est par exemple possible de faire du couper/copier/coller, mettre en gras/souligné/italique, changer de police de caractères... Mais execCommand ne sert pas que à editeur WYSIWYG, il permet aussi par exemple de bookmarker une page. (Il est aussi possible d'utiliser external.AddFavorite() par ça)
queryCommandSupported() retourne un booléen permettant de savoir si la commande est supporté sur une sélection donnée.

Seul un paramètre le premier paramètre de execCommand est requis, il s'agit de la fonction à appeler. Le deuxième est un booléen indiquant s'il on souhaite afficher une interface utilisateur quand la fonction le proprose, le troisième permet de donner une valeur par défaut à l'interface utilisateur (si deuxième paramètre à true).

Affichage d'une boîte de dialogue permettant d'insérer un lien :

document.execCommand("CreateLink", true);

Affichage d'une boîte de dialogue permettant d'insérer un lien, avec comme valeur par défaut "http://www.supinfo.com" :

document.execCommand("CreateLink", true, "http://www.supinfo.com");

Créée un lien sur "http://www.supinfo.com" :

document.execCommand("CreateLink", false, "http://www.supinfo.com");

Voici non-exaustive de fonctions execCommand utiles pour démarrer. Pour avoir la liste complète rendez-vous sur la MSDN.

BackColor
Affecte ou récupère la couleur de fond de la sélection courrante.
Bold
Passe la sélection courrante du statut gras à non-gras, et vise-versa.
Copy
Copie la sélection courrante dans le presse-papier.
CreateLink
Créée un hyperlien sur la sélection courrante, ou affiche une boîte de dialogue invitant l'utilisateur à spécifier une URL pour créer un hyperlien sur la sélection courrante.
Cut
Copie la sélection courrante dans le presse-papier, avant de l'effacer de l'écran.
Delete
Efface la selecion courrante.
FontName
Affecte ou récupère la police de caractère de la sélection courrante.
ForeColor
Affecte ou récupère la couleur de texte de la sélection courrante.
InsertImage
Remplace la sélection courrante par une image.
Italic
Passe la sélection courrant du statut italique à non-italique, et vise-versa.
JustifyCenter
Justifie centré le block de la sélection courrante.
JustifyLeft
Justifie à gauche le block de la sélection courante.
JustifyRight
Justifie à droite le block de la sélection courante.
Paste
Remplace la sélection courrante par le contenu du presse-papier.
Redo
Répète la dernière action annulée. (Edition -> Répéter)
RemoveFormat
Retire les tags de mise en page de la sélection courrante.
Underline
Passe la sélection courrante du statut souligné à non-souligné, et vise-versa.
Undo
Annule la dernière action effectuée. (Edition -> Annuler)
Unlink
Retire les lienhypertextes de la sélection courrante.

2.1 Exemple

Voici un exemple utilisation les fonctions execCommand : undo, redo, cut, copy, paste, bold, italic, underline, strikethrough, justifyleft, justifycenter, justifyright, createLink, insertImage, insertorderedlist, insertunorderedlist, forecolor, backcolor.

<DIV>
<IMG src="undo.gif" onclick="document.execCommand('undo',true);>
<IMG src="redo.gif" onclick="document.execCommand('undo',true);>
(...)
</DIV>
<SPAN id="monEditeur" contentEditable="true"></SPAN>

2.2 Fonction propriétaire

Sous Internet Explorer certaines fonctions propriétaires sont disponibles, tels que :
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/dialoghelper.asp

Cet exemple provient de la MSDN : http://msdn.microsoft.com/workshop/author/editing/tutorials/html_editor.asp
Il permet d'obtenir une boîte de dialogue windows pour choisir une couleur.

choix couleur

<OBJECT id="dlgHelper" classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0" height="0"></OBJECT>

function callColorDlg(sColorType)
{

    if (sInitColor == null)

        // affichage de la boîte de dialogue de choix de couleur

        var sColor = dlgHelper.ChooseColorDlg();
    else

        var sColor = dlgHelper.ChooseColorDlg(sInitColor);
    //change decimal to hex
    sColor = sColor.toString(16);
    // ajout de zéro si il y a moins de 6 chiffres
    if (sColor.length < 6) {
        var sTempString = "000000".substring(0,6-sColor.length);
    sColor = sTempString.concat(sColor);
}
    // change la couleur de la sélection
    document.execCommand(sColorType, false, sColor);
    sInitColor = sColor;
    oDiv.focus();
}

La balise <OBJECT> permet d'initiliser une boîte de dialogue windows pour le choix de couleur, elle est affichée avec sa fonction
ChooseColorDlg(). Le paramètre sColorType est passé à la fonction execCommand, les valeurs les plus appropriées à lui passer sont BackColor et ForeColor.

 La MSDN propose également de récupérer la liste des polices de caractères de l'ordinateur, mais il vaut proposer les polices de caractères les plus courrantes à l'utilisiteur final, car il ne comprendra pas forcément que les autres utilisateurs ne puisse pas voir son texte dans une police de caractères qu'il est le seul à posséder.

Re-voici une nouvelle version de notre éditeur avec le choix des couleurs dans la boîte de dialogue Microsoft.

2.3 Mode HTML


Pour récuper le contenu HTML d'un éditeur, on utilise innerHTML.

Ainsi pour passer du mode visuel au mode HTML :

var edt = document.getElementById("monEditeur");
var tmp = edt.innerHTML;
edt.innerText = tmp;

pour passer du mode HTML au mode visuel :

var edt = document.getElementById("monEditeur");
var tmp = edt.innerText;
edt.innerHTML = tmp;

2.4 Enregistrement

Pour que le contenu soit enregistré via un formulaire <FORM>, il faut que son contenu soit dupliqué d'un élément de formulaire tels que <INPUT type="hidden">, <INPUT type="text">, <TEXTAREA> ...
Le plus adpté est le <INPUT type="hidden"> puisqu'il est invisible. Avant l'envoi en POST ou en GET du formulaire il faudra donc copier le contenu de l'éditeur dans ce <INPUT type="hidden">, cet événement pourra être lors du clique sur le bouton de soumission du formulaire.

Si l'on est en mode visuel :

var edt = document.getElementById("monEditeur");
var hidden = document.getElementById("monInputHidden");
hidden.value =
edt.innerHTML;

Si l'on est en mode HTML :

var edt = document.getElementById("monEditeur");
var hidden = document.getElementById("monInputHidden");
hidden.value =
edt.innerText;

2.5 Liens à visiter

  • http://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp
  • http://msdn.microsoft.com/workshop/author/editing/tutorials/html_editor.asp
  • http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/dialoghelper.asp


  • Articles de la même catégorie

     Pages : Top


    523 Visites
    0 Commentaires
    Introduction au monde WebObjects
    [20 mn de lecture - paru le 11/5/2003 - Public : Débutant]

    En savoir plus


    854 Visites
    0 Commentaires
    Créer un site web dynamique avec PHP Objet - MySql
    [30 mn de lecture - paru le 11/5/2003 - Public : Débutant]

    En savoir plus


    945 Visites
    0 Commentaires
    Conception d'un projet en UML
    [25 mn de lecture - paru le 11/5/2003 - Public : Confirmé]

    En savoir plus

       Tous les Articles


    SUPINFO Training Center peut vous proposer une formation ...

       Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
       Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
       Devenez Administrateur Système Microsoft avec SUPINFO Training Center
       Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



    Powered by Campus-Booster Technology
    Conditions d'utilisation & Copyright | Respect de la vie privée
    © Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
    Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
    23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

    Web site autided by :