少し前にリッチ テキスト エディターについての情報を探していたところ、Pell というプロジェクトを発見しました。これは、非常にシンプルな機能ですが、驚くべきものです。問題は、そのサイズがわずか 1kb であるということです。プロジェクトのコアファイルである pell.js は 130 行しかありません。他の部分を追加しても、js の総数は 200 行未満です。この記事では主に 200 行未満の JavaScript コードでリッチ テキスト エディタを実装する方法を紹介します。必要な方はぜひ参考にしてください。
プロジェクトのメインコードは pell.js ファイルにあり、その構造は非常に単純です。主要な関数の実装は次の部分に依存します
actions object
function
- 。
init() 関数
Document.execCommand()
最も単純な部分から始めましょう。 exec() 関数には次の 3 行しかありません:
export const exec = (command, value =null) => { document.execCommand(command, false, value); };
document.execCommand() の単純なラッパーを作成します。 , Document.execCommand() はこのエディターの中核です。その構文は次のとおりです
bool = document.execCommand(aCommandName, aShowDefaultUI, aValueArgument)
aCommandName は、太字 'bold'、リンクの作成 'createLink'、などの文字列です。フォント サイズ 'fontSize' などを変更します。待機します
aShowDefaultUI デフォルトのユーザー インターフェイスを表示するかどうか
-
aValueArgument 一部のコマンドでは、画像やリンクの挿入などの追加入力が必要で、アドレスを指定する必要があります
注: 私の実験の後、Chrome では変更されました。aShowDefaultUI の値には影響は見つかりませんでした。この stackoverflow の質問では、これは古いバージョンの IE のパラメーターであるため、ここではデフォルトの false に設定できると述べられています。 。
actions オブジェクト
actions という名前のオブジェクトがファイル内に定義されています。これは、以下の図のツールバーのボタンの行に対応しており、アクションの各サブオブジェクトはボタンのプロパティを保存します。
コードの一部:
const actions = { bold: { icon: '<b>B</b>', title: 'Bold', result: ()=> exec('bold') }, italic: { icon: '<i>I</i>', title: 'Italic', result: ()=> exec('italic') }, underline: { icon: '<u>U</u>', title: 'Underline', result: ()=> exec('underline') }, // … }
このコードは、太字、斜体、および下線という名前の 3 つのオブジェクト プロパティを示しています。これらは、ツールバーの前面にある太字、斜体、および下線のボタンに対応しています。同じで、すべて次の 3 つの属性があります:
icon: 表示方法
title: タイトルです
result: クリックイベントとしてボタンに割り当てられる関数で、前へ 前述の exec() 関数は text を操作するために使用されます
アクションオブジェクトができたので、それをどのように使用するのでしょうか?これは init() 関数に依存し、特定のルールに従ってアクション オブジェクトから要素を選択し、配列内の各項目がボタンを生成します。以下のコードの settings.actions はこの配列であり、その各要素はツールバーに表示されるボタンに対応します。 settings.actionsの生成規則については後述する。
// pell.js 中的 init() 函数 settings.actions.forEach(action=> { // 新建一个按钮元素 const button = document.createElement('button') // 给按钮加上 css 样式 button.className = settings.classes.button // 把 icon 属性作为内容显示出来 button.innerHTML = action.icon button.title = action.title // 把 result 属性赋给按钮作为点击事件 button.onclick = action.result // 将创建的按钮添加到工具栏上 actionbar.appendChild(button) })
このようにして、配列内の各要素がツールバーにボタンを生成します。
init() 初期化関数
ペルエディタを使用したい場合は、init() 関数を呼び出してエディタを初期化するだけです。パラメーターとして設定オブジェクトを受け取ります。これには、次のようないくつかのプロパティが含まれます:
element: エディターの DOM 要素
styleWithCSS: true に設定すると、
アクション配列には次の要素を含めることができます: - 文字列
- name属性を持つオブジェクト
-
name属性を持たないが、ボタン、結果を生成するために必要な属性アイコンを持つオブジェクトなど。
actions: [ 'bold', 'underline', 'italic', { name: 'image', result: ()=> { const url = window.prompt('Enter the image URL') if (url) window.pell.exec('insertImage', ensureHTTP(url)) } }, // ... ]
は、このアクション パラメーターを init() 関数の pell.js で定義されたアクション オブジェクトと組み合わせます。アクション オブジェクトをデフォルト設定として使用できます。次のコードを参照してください。パラメータ オブジェクト設定にアクション配列が含まれていない場合、以前に定義されたアクション オブジェクトを使用してデフォルトで初期化されます。
- init() 関数の重要な部分は、編集可能領域を作成することです。ここでは、p 要素が作成され、その contentEditable 属性が true に設定されているため、前述の document.execCommand() がここで使用できるようになります。
-
// pell.js 中的 init() 函数 settings.actions = settings.actions ? settings.actions.map(action=> { if (typeof action === 'string') return actions[action] // 如果参数中传入的 action 已经在默认设置中存在,用传入的参数覆盖默认设置 else if (actions[action.name]) { return { ...actions[action.name], ...action } } return action }) : Object.keys(actions).map(action=> actions[action])
プロセス構成
最後に、「リンクの挿入」を例としてエディタプロセス全体を整理します: -
1. init()関数を呼び出すときに、パラメータオブジェクトのアクション配列に次の項目を追加します
// 创建编辑区域的元素 settings.element.content = document.createElement('p') // 让 p 成为可编辑状态 settings.element.content.contentEditable = true settings.element.content.className = settings.classes.content // 当用户输入时,更新页面的相应部分 settings.element.content.oninput = event=> settings.onChange(event.target.innerHTML) settings.element.content.onkeydown = preventTab settings.element.appendChild(settings.element.content)
2. init() の実行プロセス中に、定義されたアクション オブジェクトにリンク属性があるかどうかがチェックされます。チェックした結果、属性は存在します -
{ name: 'link', result: ()=> { const url = window.prompt('Enter the link URL') if (url) window.pell.exec('createLink', ensureHTTP(url)) } }
受信パラメータには結果項目が含まれているため、受信結果を使用してリンク オブジェクトのデフォルト値が置き換えられ、変更されたリンク オブジェクトが settings.actions 配列に配置されます。
3. settings.actions 配列を反復処理してツールバーを生成します。リンク オブジェクトは、「リンクの挿入」ボタンを生成するための項目の 1 つとして使用されます。 result プロパティはそのクリック イベントになります。
4. [リンクの挿入] ボタンをクリックすると、URL を入力するよう求められ、exec('createLink', url) を呼び出して編集領域にリンクを挿入します。
エディターの他のボタンの機能プロセスも同様です。
このようにして、Pell エディターの内容のほとんどは説明されましたが、残りの部分についてはソース コードを参照する必要があります。結局のところ、プロジェクトのコードは長くないので、テキスト エディターの入門としては適しています。
関連する推奨事項: 画像透かし機能を追加する Baidu エディタ
以上がJavaScript リッチ テキスト エディターを実装する簡単な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
