有沒有辦法在兼容W3C的瀏覽器中獲取JavaScript Range對象的html字符串?將範圍或DocumentFragment轉換爲字符串
例如,讓我們說,用戶選擇如下:Hello <b>World</b>
這是可能得到的「Hello World」作爲使用Range.toString()
方法的字符串。 (在Firefox中,還可以使用文檔的getSelection
方法。)
,但我似乎無法找到一種方式來獲得的內部HTML。
經過一番搜索,我發現範圍可以轉換爲DocumentFragment
對象。
但是DocumentFragments
沒有innerHTML
屬性(至少在Firefox中;還沒有試過Webkit或Opera)。
對我來說這似乎很奇怪:看起來很明顯,應該有一些方法來訪問選定的項目。
我意識到我可以創建一個documentFragment
,將文檔片段追加到另一個元素,然後獲取該元素的innerHTML
。
但是,該方法會自動關閉我選擇的區域內的任何打開的標籤。
除此之外,肯定有一個明顯的「更好的方法」,而不是將它附加到dom中,以便將它作爲一個字符串來獲取。
那麼,如何獲取Range或DocFrag的html字符串?
時的範圍被轉換爲一個文件片段(ISN」被創建的結束標記那是否正確?)。然而,即使範圍包含無效標記,它也應該有可能在轉換爲節點之前找出範圍內包含的內容。 – SamGoody 2011-02-06 08:14:55
我不同意。當解析無效標記時,瀏覽器會處理它,但它看起來合適,並在DOM中創建適當的節點,DOM是瀏覽器自己的文檔表示。這個無效的標記基本上被拋棄了,至少就DOM(這是JavaScript可以訪問的東西)而言。您需要停止以字符串的形式思考DOM,並開始將其視爲一棵樹。結束標記是將此樹序列化爲HTML字符串(例如,通過`innerHTML`)的產物。它們不作爲樹中的實體存在。 – 2011-02-06 12:46:34