我正在尝试让我的应用程序在所有浏览器上运行,并且我需要在用户弹出窗口中选择的文本之后将插入符号放在一个可信的div中。到目前为止,我的应用程序正在开发IE,但我还需要在Opera,Firefox和Chrome上运行它。 用于将插入符号放在IE上的我的Javascript代码如下所示:
function setCaretPos()
{
if (document.selection)
{
/* IE */
var range = document.body.createTextRange();
range.moveToElementText(editableDiv);
var insertedSpan = document.getElementById('span' + count);
var preCaretRange = document.body.createTextRange();
preCaretRange.moveToElementText(insertedSpan);
preCaretRange.moveEnd("character", 2);
range.setEndPoint("EndToEnd", preCaretRange);
range.collapse(false);
range.select();
}
else
{
if (window.getSelection) {
/* Firefox, Opera, Chrome */
var sel = window.getSelection();
if(sel.rangeCount)
{
var range = sel.getRangeAt(0);
var insertedSpan = document.getElementById('span' + count);
var pos = insertedSpan.innerHTML.length;
range.selectNodeContents(insertedSpan);
range.setEndAfter(insertedSpan);
range.collapse(false);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
正如你所看到的,在IE上我使用函数moveEnd向右移动范围结束2个字符,但我不知道在非IE浏览器上是否有任何等效的此函数移动结束具有特定数量字符的范围。 使用上面的代码,跨度内的文本被选中,但我的问题是插入的跨度后插入符号没有显示,它只是消失了。
任何建议都非常感谢。谢谢!