簡體   English   中英

如何使用webkit瀏覽器選擇范圍內的節點?

[英]How to select a node in a range with webkit browsers?

我目前正在研究WYSIWYG解決方案,並且需要一個函數來正確選擇一個節點范圍(我的意思是節點本身,不僅僅是它的內容)

DOM lvl2顯然具有此w3.org/ranges的功能並定義它

range.selectNodeContents() // Select the contents within a node

range.selectNode() //Select a node and its contents

問題是當selectNode()完全適用於Firefox甚至ie9時,使用任何Webkit瀏覽器(最后是Chrome和Safari)似乎都無法實現。 在Webkit上,selectNodeContents()和selectNode()只選擇節點內容(根據規格,我認為這是一個bug)

為了使它工作,我試圖通過使用來模擬selectNode()目標
range.setStartBefore(node);
range.setEndAfter(node);

但結果仍然相同,它可以在任何地方工作(當然> 8)但不在webkit瀏覽器上。

如果你想嘗試一下,我做了一個小小的jsfiddle你可以在這里玩(只需打開控制台,看看console.warn結果在webkit上是不一樣的:/)

我搜索了很多,但我找不到在webkit瀏覽器上實際選擇完整節點的方法。 通過奇跡,你們中的一些人會知道這樣做的方法,甚至只是任何提示繼續我的任務嗎? :/

ps:我知道“rangy”lib但我不能在我的項目中使用它,從我在源代碼中看到的內容,我甚至不確定他們是否處理過這個問題:/

問題不在於selectNode() ,它可以在WebKit中正常工作,但是使用WebKit的選擇對象,其中的范圍適合於其自身(並非總是不合理)的選擇邊界和插入位置允許的位置。 使用WebKit存在針對此的錯誤:

你是對的,Rangy沒有處理這個問題,而是傾向於反映瀏覽器原生選擇的現實。 假裝選擇不同會很快導致奇怪的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM