コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

主に2つの側面から:

1. ハイライト/改行

2. コードのコピーボタン

これら両方には既製のプラグインがあります。

コードハイライトプラグイン - highlight.js

1. ハイライト js ファイルをダウンロードします。

https://highlightjs.org/

バージョン取得ボタンをクリックして言語選択に入ります

よく使われる言語を確認してください。通常は一般的な言語で十分です。

「ダウンロード」をクリックし、ダウンロードして解凍すると、js ファイルと css ファイルが作成されます。

jsファイルはどの部分をハイライトするかを決定し、cssはコードの色を決定します。

2. 解凍したファイルから highlight.pack.js ファイルを見つけ、使用時にこの js ファイルをインポートします。

<script src="js/jquery-3.1.1.js"></script> 
<script src="js/highlight.pack.js"></script>

3. 多くの CSS ファイルが含まれるスタイル ファイルを開きます。これらのファイルを使用すると、ハイライト色や背景色 (テーマ色) など、表示コードの CSS スタイルを変更できます。

そのスタイルを使用する場合は、そのスタイルの CSS ファイルをインポートするだけで済みます。これらの英語の単語が何を表しているか分かりません。この URL は各 CSS ファイルの効果を示しています: https://highlightjs.org/static/demo/

ここでは dark.css ファイルを選択しました。

<link rel="スタイルシート" type="text/css" href="css/dark.css" rel="外部 nofollow" />

jsファイルとcssファイルをインポートしたら使用可能になります。

使用する際は、表示したいコードを必ず <pre><code></code></pre> タグで囲んでください。 ! !

コードにタグが含まれている場合は、タグの「<」を「&lt」に、「>」を「&gt」に置き換えることを忘れないでください。

コピープラグイン - clipboard.js

最初は、execCommand を直接使用してコピーを実現したいと考えました。コードは次のとおりです。コピーされたコンテンツには、改行やスペースなどの関連フォーマットがなく、互換性の問題があります。多数のプラグインを検索する過程で、既製のコピープラグインclipboard.jsが使用され、より便利かつ迅速に機能を実現できます。

<script type="text/javascript">
関数コピーリンク(){
var e = document.getElementById("コピー");
e.select(); // オブジェクトを選択 document.execCommand("Copy"); // ブラウザのコピー コマンドを実行 alert("リンクのコピーに成功しました!");
}
</スクリプト>

clipboard.js は、ブラウザからシステム クリップボードにテキストをコピーする機能を純粋な JS で実現できます。

使用中、フロントエンドブラウザにクリップボードが定義されていないというメッセージが表示されます。

最初は未定義かソースコードのエラーかと思いましたが、長い間検索した結果、jsファイルを導入する際のパスにエラーがあったことがわかりました(今後プラグインを使用する際に未定義の問題が発生した場合は、必ずF12を使用してデバッグし、404エラーがないか確認してください)

1. clipboard.jsをダウンロードします。 clipboard.js ダウンロードアドレス: https://github.com/zenorocha/clipboard.js

2. プラグインを導入する

ダウンロードしたファイルclipboard.js-master\clipboard.js-master\demoにサンプルがあり、直接使用できます。

以下は、id=copyCode の div を使用する例です。

1) jsファイルをインポートする

<script src="${ctx }/styles/js/clipboard.min.js" type="text/javascript" ></script>

2) クリップボードオブジェクトをインスタンス化する

<スクリプト>
var クリップボード = 新しい ClipboardJS('.btn');
clipboard.on('成功', 関数(e) {
   コンソールログ(e);
});
clipboard.on('エラー', 関数(e) {
コンソールログ(e);
});
</スクリプト>

3) コピー ボタンとコンテンツを定義します (注: ここでは、コピー時間をトリガーするボタンに 2 つの属性 (data-clipboard-action と data-clipboard-target) を追加する必要があります。data-clipboard-target の属性値は、ターゲット テキストの ID 値です)

<div id="copyCode">こんにちは</div>
<button class="btn" data-clipboard-action="copy" data-clipboard-target="#copyCode">コピー</button>

data-clipboard-target の値はタグにすることもできますが、タグが複数ある場合は失敗しますので、ご注意ください。

2 つのプラグインを使用する場合、競合は発生せず、適切に統合できます。

以下もご興味があるかもしれません:
  • Highlight.js JSライブラリの使い方の詳細な説明
  • jsはhighlight.jsを使用してコードを強調表示します
  • JavaScript 構文強調プラグイン highlight.js の詳細な使用方法 [highlight.js サイトのダウンロードに添付]
  • highlight.jsコードハイライトプラグインの使い方の詳しい説明

<<:  CentOS 7.5 に Python 3.6.6 を最初からインストールするための詳細なチュートリアル

>>:  MySQL 接続数を設定する方法 (接続数が多すぎる)

推薦する

Mysql マスタースレーブ同期構成の実践の詳細な説明

1. はじめに以前、「MySQL マスター スレーブ同期の原理」という記事を書きました。この記事を読...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...

mysql8.x docker リモートアクセスの詳細な設定

目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...

Dockerデータストレージのバインドマウントの詳細な説明

この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こち...

Vueはグラフィック検証コードを実装する

この記事の例では、グラフィック検証コードを実装するためのVueの具体的なコードを参考までに共有してい...

mysql5.7 でユーザーの初期パスワードを変更する方法

ユーザーが初めて MySQL データベースをインストールするとき、初期のルート パスワードを変更する...

mysql mycat ミドルウェアのインストールと使用

1. mycatとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベ...

MYSQL トランザクション チュートリアル Yii2.0 マーチャント引き出し機能

序文私はプログラマーとしてスタートした PHP プログラマーです。これまで、トレーニング コースで勉...

Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...

MySQL 5.7 インストール不要の設定グラフィックチュートリアル

Mysql は人気があり、使いやすいデータベース ソフトウェアです。以下は、mysql の無料インス...

HTML+CSS をベースにした素敵なフリップログインおよび登録インターフェースを作成します

素敵なフリップログインと登録インターフェースを作成する序文最近、ネットワーク ディスクを構築しようと...

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

vscode を使用したリモート Linux 開発の実装

過去に別れを告げるvscode にリモート SSH が導入される前は、Linux サーバー開発者の多...

mysql8 共通テーブル式 CTE 使用例の分析

この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...

MySQL デッドロックのトラブルシューティングの全プロセス記録

【著者】 Liu Bo: Ctrip テクニカル サポート センターのシニア データベース マネージ...