>我最近進入構建Wysiwyg編輯和彈出案的企業對瀏覽器API產生了一些令人著迷的見解。 產假為深度潛入技術挑戰提供了絕佳的機會,而沒有截止日期的壓力。
>我目前的重點是為“代號鵝”做出貢獻,這是一種帶有銹後端和基於電子的聊天界面的開源AI代理。我提交了一個拉動請求,以集成Wysiwyg編輯器,選擇了對現有軟件包的自定義解決方案,以最大程度地減少捆綁包大小。 但是,維護人員建議使用彈出工具欄來解決空間問題。創建此浮動工具欄被證明具有意外的挑戰。我的目標很簡單:
>在文本選擇時顯示彈出工具欄。
標準html元素:
限制儘管具有跨瀏覽器的兼容性和易用性,但彈出式API仍有局限性:
它僅由於
屬性限製而與按鈕元素一起起作用。popovertarget
感謝Mark Techson,他通過Una Kravets的會議演講向我介紹了Popover API:“少了,更多的力量:利用網絡平台的力量。”
> Colby Fayock的博客文章“如何與選擇API共享所選文本”,向我介紹了Selection API
>(可通過window.getSelection()
訪問)。 此API返回aSelection
對象詳細介紹所選文本。
getRangeAt(0)
getRangeAt(0)
Selection
對像中的方法提供了選擇的開始和最終偏移:
startOffset
:選擇的開始索引。 endOffset
:選擇的結尾索引(在最後一個選擇的字符之後)。
= 7和startOffset
endOffset
>訪問第一個選擇。 諸如Firefox之類的瀏覽器允許多個選擇(CTRL單擊),但是單選瀏覽器中的0次數超過0會導致錯誤。
getRangeAt(0)
getBoundingClientRect()
>的訪問,該>返回帶有所選文本的頂部,右,底部,左側坐標,寬度和高度的邊界框。 這允許在選擇上方精確的彈出位置,如下所示:getRangeAt(0)
但是,這種方法在文本區域內受到限制。
getBoundingClientRect()
鏡像div
>文本包裝在DIV和文本區域之間可能有所不同。
Selection API
為什麼不使用NPM軟件包? getComputedStyle()
>
>
結論以上是哪些文字區域彈出案教給我有關瀏覽器API的知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!