Heim Web-Frontend js-Tutorial Eine kurze Analyse der Implementierungsprinzipien von Online-WYSIWYG-HTML-Editor_Javascript-Fähigkeiten

Eine kurze Analyse der Implementierungsprinzipien von Online-WYSIWYG-HTML-Editor_Javascript-Fähigkeiten

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

Heutzutage fördert die Website-Entwicklung zunehmend die Benutzererfahrung, und es gibt immer mehr Tools, die den Benutzern Komfort bieten, und der Online-HTML-Inhaltseditor sollte als einer der „älteren“ angesehen werden. Diejenigen mit einfachen Funktionen können Benutzern die Steuerung des Textstils wie Textfarbe, Schriftgröße usw. bieten, während diejenigen mit komplexen Funktionen sogar leistungsstarke Funktionen ähnlich wie Word bieten können. Obwohl es mittlerweile viele Open-Source-Editoren gibt, sind nicht viele davon wirklich einfach zu bedienen, sodass an der Verbesserung ständig gearbeitet wird.

Die meisten Editoren im Internet verfügen heute über sehr leistungsstarke Funktionen, die während der Verwendung natürlich auch viel Konfiguration erfordern. Wenn wir keinen so leistungsstarken Editor benötigen, können wir selbst einen implementieren, da der Code nicht kompliziert ist. Das Folgende ist eine kleine persönliche Erfahrung, die nur als Referenz dient (am Beispiel von ExtJS HTMLEditor).

1. Initialisierung. Wenn die Seite vollständig geladen ist, fügen Sie der Seite einen IFrame hinzu (optional). Hier ist zu beachten, dass Sie zum Ermitteln des Status der Seite warten müssen, bis die Seite vollständig geladen ist, bevor Sie fortfahren, um Fehler zu vermeiden, bei denen bestimmte Elemente nicht gefunden werden können.

2. Öffnen Sie die Bearbeitungsfunktion. Machen Sie den IFrame bearbeitbar (der folgende Code stammt aus dem HTMLEditor von ExtJS):

Code kopieren Der Code lautet wie folgt:

// Holen Sie sich das Fensterobjekt von iframe
getWin: function(){
           return Ext.isIE ? this.iframe.contentWindow : window.frames[this.iframe.name];
},

//Holen Sie sich das Dokumentobjekt von iframe
getDoc: function(){
           return Ext.isIE ? this.getWin().document: (this.iframe.contentDocument || this.getWin().document);
},

//Öffnen Sie das Dokumentobjekt und schreiben Sie Initialisierungsinhalte hinein, um es mit FireFox kompatibel zu machen
doc = this.getDoc();
doc.open();
doc.write('');
//Dokumentobjekt-Bearbeitungsmodus öffnen
doc.designMode = "on";
doc.close();

Auf diese Weise können Sie Inhalte in diesen einfachen Editor schreiben.

3. Holen Sie sich den Inhalt des Editors. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

//Das Body-Objekt des Editors abrufen
var body = doc.body ||. doc.documentElement;
//Den Inhalt des Editors abrufen
var content = body.innerHTML;
//Verarbeiten Sie den Inhalt, z. B. Ersetzen einiger Sonderzeichen usw.
//Ein bisschen Code

//Inhalt zurückgeben
Inhalt zurückgeben;

4. Stileinstellungen hinzufügen. Obwohl der obige Editor grundlegende Funktionen implementiert, ist er wirklich zu einfach. Einige einfache Stilimplementierungen sollten hinzugefügt werden. Die execCommand-Methode des Dokuments macht diese Idee möglich.

Code kopieren Der Code lautet wie folgt:

//Einheitliche Ausführungsbefehlsmethode
Funktion execCmd(cmd, value){
//Um das Dokumentobjekt zu erhalten, beziehen Sie sich auf den obigen Code
//Rufen Sie die execCommand-Methode auf, um den Befehl auszuführen
doc.execCommand(cmd, false, value === undefiniert ? null : value);
};

//Ändern Sie die ausgewählte Schriftart in Fettdruck, Strg-B
execCmd('bold');
//Unterstreichen, Strg-U
execCmd('underline');
//Zu Kursivschrift wechseln, Strg-I
execCmd('italic');
//Legen Sie die Farbe des Textes fest
execCmd('forecolor', Ext.isSafari || Ext.isIE ? '#' color : color);
//Einen Inhalt am Cursor einfügen
Funktion insertAtCursor(text){
//Um das Win-Objekt zu erhalten, beziehen Sie sich auf den obigen Code
if(Ext.isIE){
      win.focus();
var r = doc.selection.createRange();
If(r){
         r.collapse(true);
          r.pasteHTML(text);                          }else if(Ext.isGecko || Ext.isOpera){
      win.focus();
​​execCmd('InsertHTML', text);
}else if(Ext.isSafari){
​​execCmd('InsertText', text);
}
}

5. Gehen Sie einen Schritt weiter. Jetzt können Sie den Stil ändern. Wenn der Editor über eine Symbolleiste verfügt (dies sollte unvermeidlich sein), möchten wir auch, dass die Schaltflächen in der Symbolleiste automatisch hervorgehoben oder entsprechend dem Stil der Cursorposition normal angezeigt werden. Die Methode queryCommandState() des Dokuments ermöglicht die Verwirklichung dieser Idee.


Code kopieren Der Code lautet wie folgt:
//Um das Dokumentobjekt zu erhalten, beziehen Sie sich auf die gegenüberliegende Seite
//Ob der Cursor fett ist
var isBold = doc.queryCommandState('bold');
if(isBold){
//Ändern Sie den Stil der Schaltfläche „Fett“
}
//Natürlich kann der obige Code zusammengeführt werden, dies ist nur ein Hinweis

//Unterstreichen
doc.queryCommandState('underline');
//kursiv
doc.queryCommandState('italic');

Dieser Artikel bietet nur eine einfache Idee zur Implementierung des Editors und einige der Codes können direkt verwendet werden. Freunden, die ihren eigenen Editor implementieren möchten, wird empfohlen, auf den HTMLEditor-Code in ExtJS zu verweisen, der einfach und klar ist und darauf erweitert werden kann.

Eine letzte Erinnerung: Achten Sie unbedingt auf Browserkompatibilitätsprobleme und warten Sie nicht bis zum Ende, um die Kompatibilität zu testen. Bei einer so großen Menge an JavaScript-Code sind Anpassungen schmerzhafter.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles