Wysiwygの編集者とポップオーバーの構築に関する最近の進出は、ブラウザAPIに対する魅力的な洞察をもたらしました。 出産休暇は、締め切りの圧力なしに、深い潜らのための技術的な課題への絶好の機会を提供しました。 私の現在の焦点は、錆びたバックエンドと電子ベースのチャットインターフェイスを備えたオープンソースAIエージェントである「コードネームグース」に貢献しています。 WysiWygエディターを統合するためのプルリクエストを送信し、バンドルサイズを最小限に抑えるために既存のパッケージ上のカスタムソリューションを選択しました。 しかし、メンテナーは、スペースの懸念に対処するためのポップオーバーツールバーを提案しました。 このフローティングツールバーを作成することは、予想外に挑戦的であることが判明しました。私の目標は簡単でした:
テキストの選択時にポップオーバーツールバーを表示します。
は、選択の上に正確に配置します。
家具を再配置し、アイテムを追加し、距離を測定できる家。
popovertarget
からアクセス可能)を紹介しました。 このAPIは、選択したテキストを詳述してSelection API
オブジェクトを返します。
window.getSelection()
Selection
getRangeAt(0)
メソッドは、選択の開始と終了のオフセットを提供します。
getRangeAt(0)
:選択の開始インデックス。Selection
startOffset
たとえば、「hello、world!welcome」では、「world」を選択するとendOffset
startOffset
最初の選択にアクセスします。 Firefoxのようなブラウザは複数の選択を許可します(Ctrl-Click)が許可されますが、単一選択ブラウザーで0を超えるインデックスにアクセスすると、エラーが発生します。
endOffset
は、選択したテキストの上部、右、下、左座標、幅、および高さで境界ボックスを返します。 これにより、選択したように、選択の上に正確なポップオーバー配置が可能になります。
getRangeAt(0)
getBoundingClientRect()
クロードとの議論を通じて発見された「ミラーリングされたdiv」テクニックは、回避策を提供します。 目に見えないdivがテキスト領域にオーバーレイし、そのコンテンツとスタイリングを反映しています。 ユーザーのインタラクションはこのDIV内で発生し、標準のテキストエリアの外観を維持しながら完全な Jhey Thompkinsのブログ投稿、「方法:テキストカーソルはどこですか?」、getRangeAt(0)
メソッド(要素の計算されたCSSスタイルを返す)は、オーバーレイdiv。getBoundingClientRect()
テキストラッピングは、divとテキスト領域の間で異なる場合があります。
Selection API
getComputedStyle()
多くのパッケージは標準的なDOM要素でうまく機能しますが、同じ基本的な制限のためにテキスト領域と格闘しています。内部レンダリングと位置へのアクセスが制限されています。
豊かなテキストの相互作用の進歩にもかかわらず、テキスト領域との連携は驚くほど複雑なままです。 これらのブラウザAPIを探索することはやりがいのある経験でした。 将来のAPIは、選択ベースのポップオーバーなどのタスクを簡素化する可能性があります。 代替ソリューションに遭遇した場合は、それらについて聞いてくれてありがとう。
以上がブラウザAPIについて教えてくれたテキスト領域のポップオーバーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。