[解決済み] レンダリングされたHTMLのdiffアルゴリズムを持っている人はいますか?[クローズド]
質問
私は、2 つの HTML ページの差分を並べて表示するための、おそらく Javascript による優れた差分アルゴリズムに興味があります。アイデアは、diff が レンダリングされた HTML の差分を表示することです。
明確にするために、私はサイドバイサイドの差分を見ることができるようにしたいです として レンダリングされた出力として見ることができます。そのため、段落を削除すると、サイド バイ サイド ビューでは、物事を正しく配置することができます。
Josh その通りです。しかし、削除されたテキストを赤色か何かで表示することはできるかもしれません。HTML コンテンツに WYSIWYG エディタを使用する場合、差分を取るために HTML に切り替える必要がないようにしたい、というのがその考えです。2つのWYSIWYGエディタを並べて使いたいんです。少なくとも、エンドユーザーにとって使いやすいように、差分を並べて表示することができます。
どのように解決するのですか?
レンダリングされた HTML の diff の見栄えを大幅に改善するために使用できる、もう 1 つの素晴らしいトリックがあります。 これは最初の問題を完全に解決するものではありませんが、レンダリングされた HTML の diff の見た目に大きな違いをもたらすでしょう。
横に並べてレンダリングされた HTML は、差分が垂直に並ぶことが非常に難しくなります。 垂直方向の配置は、サイド バイ サイドの diff を比較するために非常に重要です。 サイド バイ サイドの diff の垂直方向の配置を改善するには、diff が垂直方向に配置されるべきチェックポイントに、各バージョンの diff に不可視の HTML 要素を挿入することができます。 次に、クライアントサイドの JavaScript を少し使用して、側面が垂直に並ぶまでチェックポイントの周りに垂直方向の間隔を追加します。
もう少し詳しく説明します。
このテクニックを使いたい場合は、diff アルゴリズムを実行し、たくさんの
visibility:hidden
<span>
を挿入するか、あるいは小さな
<div>
を、diff に従ってサイドバイサイドのバージョンが一致する場所に配置します。 次に、各チェックポイント (とそのサイドバイサイドの隣人) を見つけて、ページ上で上位 (下位) にあるチェックポイントに縦の間隔を追加する JavaScript を実行します。 これで、レンダリングされた HTML の差分はそのチェックポイントまで垂直に揃い、サイド バイ サイドのページの残りの部分で垂直方向の揃えを修復し続けることができます。
関連
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] HTMLで表示される上下の三角形(軸のない矢印)に使用できる文字は何ですか?
-
[解決済み] XMLのアンパサンドをエスケープして、HTMLで実体として表示するにはどうすればよいですか?
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]