ホームページ ウェブフロントエンド jsチュートリアル オンライン WYSIWYG HTML エディター_JavaScript スキルの実装原則の簡単な分析

オンライン WYSIWYG HTML エディター_JavaScript スキルの実装原則の簡単な分析

May 16, 2016 pm 04:02 PM
html 実施原則 編集者

現在、Web サイト開発はユーザー エクスペリエンスをますます推進しており、ユーザーに利便性を提供するツールがますます増えています。オンライン HTML コンテンツ エディターは「古い」ものの 1 つであると考えるべきです。単純な機能を備えたものは、テキストの色やフォント サイズなどのテキスト スタイルの制御をユーザーに提供できますが、複雑な機能を備えたものは、Word に似た強力な機能を提供することもできます。現在、オープンソースのエディタは数多くありますが、実際に使いやすいものは多くないため、常に改良作業が行われています。

今日のインターネット上のほとんどのエディターは、比較的強力な機能を備えており、使用中には当然ながら多くの設定が必要になります。コードは複雑ではないため、そのような強力なエディターが必要ない場合は、自分で実装することができます。以下は、参考のために少し個人的な経験を述べたものです (例として ExtJS HTMLEditor を取り上げます)。

1. 初期化。ページの読み込みが完了したら、ページに IFrame を追加します (オプション)。ここで注意すべき点は、特定の要素が見つからないエラーを防ぐために、ページのステータスを判断するには、ページが完全に読み込まれるまで待ってから続行することです。

2. 編集機能を開きます。 IFrame を編集可能にします (以下のコードは ExtJS の HTMLEditor からのものです):

コードをコピー コードは次のとおりです:

// iframe のウィンドウオブジェクトを取得
getWin : function(){
戻り Ext.isIE ? this.iframe.contentWindow : window.frames[this.iframe.name];
}、

//iframe のドキュメントオブジェクトを取得します
getDoc: function(){
return Ext.isIE ? this.getWin().document: (this.iframe.contentDocument || this.getWin().document);
}、

//ドキュメント オブジェクトを開き、FireFox と互換性を持たせるために初期化コンテンツをそれに書き込みます
doc = this.getDoc();
doc.open();
doc.write('');
//ドキュメントオブジェクト編集モードを開きます
doc.designMode = "オン";
doc.close();

このようにして、このシンプルなエディターにコンテンツを書き込むことができます。

3. エディターのコンテンツを取得します。コードは次のとおりです:

コードをコピー コードは次のとおりです:

//エディターのボディオブジェクトを取得します
var body = doc.body || doc.documentElement;
//エディターのコンテンツを取得します
var content = body.innerHTML;
//一部の特殊文字の置換など、コンテンツを処理します
// いくつかのコード

//コンテンツを返します
コンテンツを返す;

4. スタイル設定を追加します。上記のエディターは基本的な機能を実装していますが、実際には単純すぎるため、いくつかの単純なスタイルの実装を追加する必要があります。ドキュメントの execCommand メソッドは、このアイデアを可能にします。

コードをコピー コードは次のとおりです:

//統一実行コマンドメソッド
function execCmd(cmd, value){
// doc オブジェクトを取得するには、上記のコードを参照してください
// execCommand メソッドを呼び出してコマンドを実行します
doc.execCommand(cmd, false, value === 未定義 ? null : value);
};

//選択したフォントを太字に変更します。Ctrl+B
execCmd('太字');
//下線、Ctrl+U
execCmd('下線');
//斜体に変更するには、Ctrl-I
execCmd('斜体');
//テキストの色を設定します
execCmd('forecolor', Ext.isSafari || Ext.isIE ? '#' color : color);
// カーソル位置にコンテンツを挿入します
function insertAtCursor(text){
//win オブジェクトを取得するには、上記のコードを参照してください
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. さらに一歩進みます。エディターにツールバーがある場合は (これは避けられませんが)、スタイルを変更できるようになりました。また、カーソル位置のスタイルに応じて、ツールバー上のボタンが自動的に強調表示されるか、通常どおりに表示されるようにします。ドキュメントの queryCommandState() メソッドを使用すると、このアイデアを実現できます。


コードをコピー コードは次のとおりです:
//docオブジェクトを取得するには反対側を参照
//カーソルが太字かどうか
var isBold = doc.queryCommandState('bold');
if(isBold){
//太字ボタンのスタイルを変更します
}
// もちろん、上記のコードはマージできます。これは単なるヒントです

//下線
doc.queryCommandState('下線');
//斜体
doc.queryCommandState('italic');

この記事では、エディターを実装するための簡単なアイデアのみを提供します。一部のコードは直接使用できます。独自のエディタを実装したい友人には、ExtJS の HTMLEditor コードを参照することをお勧めします。ExtJS はシンプルで明確で、拡張することができます。

最後の注意事項: ブラウザーの互換性の問題に必ず注意し、互換性をテストするのに最後まで待たないでください。これほど大量の JavaScript コードの場合、調整はさらに困難になります。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles