2011-05-09 38 views
3

節點開始時,將光標移動到前一個節點的最後,我有一個TinyMCE的實例的以下內容:谷歌瀏覽器將其設置爲使用JavaScript

<p><span id="span1">Test</span><span id="span2">Bla</span></p> 

當用戶之前設置光標「 B「並開始輸入,我希望將文本輸入到第二個範圍。谷歌瀏覽器(我使用的是Chromium 11.0.696.65確切)將光標移到第一個跨越,結束你可以驗證使用下面的代碼:

document.body.innerHTML = '<p><span id="span1">Test</span><span id="span2">Bla</span></p>'; 
document.designMode = "on"; 
// Now click between the 「t」 and the 「B」 
var sel = document.getSelection(); 
alert(sel.baseNode.data); 

不幸的是,它似乎沒有可能將焦點設置爲手動第二範圍的開頭:

var span = document.getElementById("span2"); 
sel.setBaseAndExtent(span, 0, span, 0); 
alert(sel.baseNode.data); // Is still 「Test」! 
sel.setBaseAndExtent(span, 1, span, 1); // Move inside the span for testing 
alert(sel.baseNode.data); // Now it’s 「Bla」… 

谷歌瀏覽器似乎光標再次移動到前一個節點的末尾。我也嘗試修改Range對象,但是這導致了相同的問題。

我想不出這個問題的任何解決方案,有沒有人有一個想法是什麼導致這一點,以及如何解決它?

乾杯,
偷拍

+0

我很抱歉地說,我不認爲你可以解決這個:( – Atticus 2011-05-09 23:26:20

回答

1

這是一個長期的WebKit中已令人沮喪的富文本編輯器的開發人員多年的bug。相關的WebKit錯誤:

沒有一個體面的解決辦法,很遺憾。過去,我使用跟蹤光標位置,在當前文本節點的起始位置插入一個零寬度空格字符,並在光標移出其他位置後將其移除,但這是一種絕對的痛苦,難以獲得對。