Maison interface Web js tutoriel Une brève analyse des principes de mise en œuvre des compétences en ligne WYSIWYG HTML editor_javascript

Une brève analyse des principes de mise en œuvre des compétences en ligne WYSIWYG HTML editor_javascript

May 16, 2016 pm 04:02 PM
html 实现原理 编辑器

De nos jours, le développement de sites Web favorise de plus en plus l'expérience utilisateur, et il existe de plus en plus d'outils pour offrir plus de commodité aux utilisateurs, et l'éditeur de contenu HTML en ligne doit être considéré comme l'un des « plus anciens ». Ceux dotés de fonctions simples peuvent fournir aux utilisateurs un contrôle du style de texte, tel que la couleur du texte, la taille de la police, etc., tandis que ceux dotés de fonctions complexes peuvent même fournir des fonctions puissantes similaires à Word. Bien qu'il existe désormais de nombreux éditeurs open source, peu d'entre eux sont vraiment faciles à utiliser, leur travail d'amélioration est donc toujours en cours.

La plupart des éditeurs sur Internet ont aujourd'hui des fonctions très puissantes, elles nécessitent également beaucoup de configuration lors de leur utilisation. Bien entendu, le code sera naturellement "gonflé". Si nous n’avons pas besoin d’un éditeur aussi puissant, nous pouvons en implémenter un nous-mêmes, car le code n’est pas compliqué. Ce qui suit est un peu d'expérience personnelle, à titre de référence uniquement (en prenant ExtJS HTMLEditor comme exemple).

1. Initialisation. Une fois le chargement de la page terminé, ajoutez un IFrame à la page (facultatif). Ce qu'il faut noter ici, c'est que pour déterminer l'état de la page, attendez que la page soit complètement chargée avant de procéder pour éviter des erreurs dans lesquelles certains éléments ne peuvent pas être trouvés.

2. Ouvrez la fonction d'édition. Rendre l'IFrame modifiable (le code ci-dessous provient de l'éditeur HTML d'ExtJS) :

Copier le code Le code est le suivant :

// Récupère l'objet fenêtre de l'iframe
getWin : fonction(){
           return Ext.isIE ? this.iframe.contentWindow : window.frames[this.iframe.name];
},

//Récupérer l'objet document de l'iframe
getDoc : fonction(){
           return Ext.isIE ? this.getWin().document : (this.iframe.contentDocument || this.getWin().document);
},

//Ouvrez l'objet document et écrivez-y le contenu d'initialisation pour qu'il soit compatible avec FireFox
doc = this.getDoc();
doc.open();
doc.write('');
//Ouvrir le mode d'édition des objets du document
doc.designMode = "on";
doc.close();

De cette façon, vous pouvez écrire du contenu dans cet éditeur simple.

3. Récupérez le contenu de l'éditeur, le code est le suivant :

Copier le code Le code est le suivant :

//Récupère l'objet corps de l'éditeur
var corps = doc.body || doc.documentElement;
//Récupérer le contenu de l'éditeur
var content = corps.innerHTML;
//Traitement du contenu, comme le remplacement de certains caractères spéciaux, etc.
//Un peu de code

//Retourner le contenu
renvoyer le contenu ;

4. Ajoutez des paramètres de style. Bien que l'éditeur ci-dessus implémente des fonctions de base, il est vraiment trop simple. Certaines implémentations de style simple devraient être ajoutées. La méthode execCommand du document rend cette idée possible.

Copier le code Le code est le suivant :

//Méthode de commande d'exécution uniforme
fonction execCmd(cmd, valeur){
//Pour obtenir l'objet doc, référez-vous au code ci-dessus
//Appelez la méthode execCommand pour exécuter la commande
doc.execCommand(cmd, false, value === non défini ? null : value);
};

//Changer la police sélectionnée en gras, Ctrl-B
execCmd('gras');
//Souligner, Ctrl-U
execCmd('soulignement');
// Passage en italique, Ctrl-I
execCmd('italique');
//Définissez la couleur du texte
execCmd('forecolor', Ext.isSafari || Ext.isIE ? '#' color : couleur);
//Insérer un élément de contenu au niveau du curseur
fonction insertAtCursor(text){
//Pour obtenir l'objet win, référez-vous au code ci-dessus
si(Ext.isIE){
     win.focus();
var r = doc.selection.createRange();
Si(r){
         r.collapse(true);
          r.pasteHTML(text);                          }sinon si(Ext.isGecko || Ext.isOpera){
     win.focus();
​​ execCmd('InsertHTML', texte);
}sinon si(Ext.isSafari){
​​ execCmd('InsertText', texte);
>
>

5. Allez plus loin. Vous pouvez maintenant modifier le style. Si l'éditeur dispose d'une barre d'outils (cela devrait être inévitable), nous souhaitons également que les boutons de la barre d'outils soient automatiquement mis en surbrillance ou affichés normalement en fonction du style de la position du curseur. La méthode queryCommandState() du document permet de concrétiser cette idée.


Copier le code Le code est le suivant :
//Pour obtenir l'objet doc, référez-vous au côté opposé
//Si le curseur est en gras
var isBold = doc.queryCommandState('bold');
si(isBold){
//Changer le style du bouton Gras
>
//Bien sûr, le code ci-dessus peut être fusionné, ce n'est qu'un indice

//Souligner
doc.queryCommandState('underline');
//italique
doc.queryCommandState('italic');

Cet article ne fournit qu'une idée simple pour implémenter l'éditeur, et certains codes peuvent être utilisés directement. Il est recommandé aux amis qui souhaitent implémenter leur propre éditeur de se référer au code HTMLEditor dans ExtJS, qui est simple et clair, et peut être étendu dessus.

Un dernier rappel : veillez à faire attention aux problèmes de compatibilité des navigateurs et n'attendez pas la fin pour tester la compatibilité. Pour une si grande quantité de code JavaScript, les ajustements sont plus pénibles.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Espace réservé d'entrée HTML Espace réservé d'entrée HTML Sep 04, 2024 pm 04:54 PM

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.

See all articles