2011-05-09 40 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错误:

没有一个体面的解决办法,很遗憾。过去,我使用跟踪光标位置,在当前文本节点的起始位置插入一个零宽度空格字符,并在光标移出其他位置后将其移除,但这是一种绝对的痛苦,难以获得对。