2012-07-11 50 views
3

我目前工作的一個所見即所得的解決方案,需要一個功能與一系列正確選擇一個節點(我的意思是節點本身,不僅是它的內容)如何使用webkit瀏覽器選擇範圍內的節點?

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與您可以玩here(只需打開控制檯並查看webkit上的console.warn結果即可:/)

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

PS:我知道「瘦長」的lib,但我不能在我的項目中使用它,並從我的源讀取,我甚至不能確定他們處理那件事反正:/

回答

2

問題不在於selectNode(),它在WebKit中工作正常,而是使用WebKit的選擇對象,該選擇對象適用於其允許選擇邊界和插入位置的位置的自己的(並非總是不合理的)想法。有起訴這與WebKit的錯誤:

你是對的,四肢瘦長不解決這個問題,而寧願以反映瀏覽器的原生選擇的現實。假裝選擇不同會很快導致奇怪的行爲。

+0

非常感謝您的回答,即使它終於爲我解決了任何問題,最終確認了我的想法。由於該錯誤報告從2007年我猜它不會移動..我必須找到另一個解決方案。 (當你在那裏時,thx也是爲了你的工作而使用的) – vor 2012-07-12 13:01:24

相關問題