我需要選擇一個小小的mce節點,我正在嘗試下面的代碼。它工作在非IE瀏覽器,但IE瀏覽器提示錯誤的 - 錯誤:對象不支持此屬性或方法selectNode()不能在IE8中工作
碼 -
rng = ed.selection.getRng();
rng.selectNode(tn);
第二行導致錯誤。有沒有其他IE兼容的方法呢?
我需要選擇一個小小的mce節點,我正在嘗試下面的代碼。它工作在非IE瀏覽器,但IE瀏覽器提示錯誤的 - 錯誤:對象不支持此屬性或方法selectNode()不能在IE8中工作
碼 -
rng = ed.selection.getRng();
rng.selectNode(tn);
第二行導致錯誤。有沒有其他IE兼容的方法呢?
其原因是您獲得的不同範圍對象。在FF中,您會看到一個對象,它提供了幾個功能,如selectNode()
。 IE範圍僅向您顯示僅包含屬性的textrange對象。
解決這個很簡單:
// true is important here - causes getRng to return a DOM Range and not a text range (IE)
rng = ed.selection.getRng(true);
rng.selectNode(tn);
我讀到TextRange對象,並能夠做什麼,我打算。我想將光標放在一個範圍內。我可以使用TextRange對象的屬性和方法如下做到這一點 -
range.moveToElementText (node); //node is the span in which I wanted to place my cursor
range.select();
moveToElementText - 對齊當前TextRange對象到指定元素的文本內容的起點和終點。我添加了一個nbsp;跨度和上面的代碼可以取代它,由我的脫字符。
爲什麼然後你問關於selectNode函數,而不是關於脫字符的位置? – Thariama 2011-03-04 13:23:08
selectNode未在TextRange對象的方法中列出。我測試並發現,儘管它沒有產生任何錯誤,但它不能按需要工作。謝謝 – KutePHP 2011-03-04 12:26:40
這就是我在我的回答中所說的。當您使用getRng(true)時,您將收到一個DOM範圍而不是文本範圍!這是你想要的。 – Thariama 2011-03-04 12:32:38