クロスブラウザ環境でコンテンツの最後にキャレットを一貫して配置するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-19 08:54:03
オリジナル
878 人が閲覧しました

How to Consistently Place the Caret at the End of Content in a Cross-Browser Environment?

コンテンツ末尾のキャレットの配置: クロスブラウザー ソリューション

Web 開発では、ユーザーがテキストを編集できるようにするには、キャレット (カーソル)が正しく表示されます。これは、ブラウザ間の互換性を扱う際に課題となります。

ブラウザ固有の動作

ブラウザが異なると、contenteditable の処理方法も異なります:

  • Chrome: インサート
    改行の場合
  • Firefox:
    を挿入します。
    を使用します。新しい行の場合
  • IE:

    を挿入します。新しい段落の場合

  • 末尾にキャレットを設定する

    ブラウザに関係なく、一貫してテキストの末尾にキャレットを設定するには、次の関数を実装できます。 :

    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">el.focus();
    if (typeof window.getSelection != "undefined"
            &amp;&amp; typeof document.createRange != "undefined") {
        var range = document.createRange();
        range.selectNodeContents(el);
        range.collapse(false);
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (typeof document.body.createTextRange != "undefined") {
        var textRange = document.body.createTextRange();
        textRange.moveToElementText(el);
        textRange.collapse(false);
        textRange.select();
    }
    ログイン後にコピー

    }

実装

この関数を使用するには、単に呼び出します編集可能な要素を作成した後にそれを実行します:

...

placeCaretAtEnd( document.querySelector('p') );
ログイン後にコピー

利点

このクロスブラウザー ソリューションは、一貫したユーザー フレンドリーなテキスト編集エクスペリエンスを提供し、カーソルが常に正しく配置されるようにします。本文の最後にあります。

以上がクロスブラウザ環境でコンテンツの最後にキャレットを一貫して配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:jQuery AJAX JSONP リクエストがクロスドメイン ソースからデータを返せないのはなぜですか? 次の記事:JavaScript 関数のスコープ内でローカル変数を取得するにはどうすればよいですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート