1

Web ページ内の編集可能な少量のテキストをシンタックス ハイライト表示できるようにしたいと考えていますが、前景色のバリエーションはわずかです。 (議論のために、3つとしましょう。)

オンライン リッチテキスト エディターでの煩わしい経験から、彼らのルーズエンドで君臨するのは無駄だと思うようになりました。そこで、いくつかの固定幅フォント<textarea>要素を重ね合わせて、それらを同期させるという奇抜なアイデアを思いつきました。それぞれが異なる前景色を持ち、背景の透明度を使用して、特定のレイヤーが印刷されない場所にギャップを残すだけです. ブラウザが合成を行い、すべてがうまくいくでしょう。

Opera、Chrome、Firefox、および Safari でのいくつかの探索的テストでは、これが実際に機能することがわかりました (変に聞こえるかもしれませんが)。しかし、非常にプレーンなテキストを使用したい最大の理由の 1 つは、コピーと貼り付けが簡単にできるようにするためです。しかし、テキストがこのようにレイヤーに分割されている場合、ユーザーが選択してすべてのテキストを生の形式で取得できるユニオンはありません。

私の最初の衝動は、すべてのレイヤーからのコンテンツを含むように同期されたテキストの最上位レイヤーにスタックすることでしたが、その色は透明でした。繰り返しますが、「うまくいきました」...しかし、残念ながら、ほとんどすべてのブラウザは、アクティブなテキストエリアの色から挿入ポイントの色をキューに入れています。つまり、キャレットが非表示になり、一部のブラウザーでは、選択しているテキストも非表示になります。(!)

そのため、私よりもこのことについて詳しい方からの洞察を求めています。このようなスタックをクロスブラウザーの方法でフックして、作成中に選択内容を読み取れるようにし、ユーザーが「コピー」したときにマージされたテキストを取得できますか? 誰もこのようなことを試したことがありますか? それとも、 「それはひどいアイデアであり、それを機能させる方法はありません」という証拠はありますか? 選択が変更されたときにクロスブラウザー通知を受け取ることができれば、マージされた文字を、選択範囲内のポイントで選択されているレイヤーに挿入できます。:-/

(ああ、私たちが織り成す絡み合ったウェブ...)

4

2 に答える 2

2

悪いアイデア。あなたはそこに行きたくありません。

あなたは「車輪の再発明」を試みています。いくつかのプロジェクトは、すでにその問題を解決しています。彼らのソリューションは広く使用されているため、今後数週間で登場するものはすべて成熟しています.

1 つのオンライン リッチ エディターを選択し、それを希望どおりに処理する方法を習得すれば、大幅に時間を短縮できます。

車輪についてもっと学ぶつもりがない限り、車輪を再発明しないでくださいというジェフ・アトウッドの投稿を読むべきです

于 2012-11-26T17:32:01.867 に答える
1

既存のソリューションを使用する方がはるかに迅速です。ACEエディタを見てください:

http://ace.ajax.org

ACE は、JavaScript で記述された組み込み可能なコード エディターです。Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。ACE は Cloud9 IDE の主要なエディターとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。

具体的には、このリッチテキスト エディターには、構文の強調表示やエラー/行番号などを表示する機能があります。

于 2012-11-26T17:34:39.517 に答える