小弟正在弄个编辑器。想实现的效果就是在可编辑的DIV中,选中一段文本,然后点击一个A链接往这个DV中插入字符。
其它浏览器没有问题,唯独OPERA下,我选中一段文本,再点A链接想插入字符,本来应该是将这段选中的文本替换掉,但是,却插入到了DIV中的文本的最前面。
于是我想了个办法,在DIV的mousedown的时候,获取鼠标光标的起始位置,并保存下来。然后我在插入字符之前,重新设置光标的起始位置,也就再次选中了,然后再插入。
问题是,不知道怎样在非IE浏览器【比如opera】下获取光标的起始位置?
回liner-z,不明白你说的这个什么意思。能不能举个例子?谢谢
很久之前做过一个编辑器,复制了一点代码给你看看是不是你需要的,这是获取选中的标签的,你只需要拿到选中的标签替换内容就行了
var range =dom.selection||win.getSelection();
if( Consts.IE ){
elem = range.item ? range.item(0) : range.parentElement();
}else {
try{
var elem = range.commonAncestorContainer;
if (!range.collapsed
&& range.startContainer == range.endContainer
&& range.startOffset - range.endOffset < 2
&& range.startContainer.hasChildNodes()
){
elem = range.startContainer.childNodes[range.startOffset];
}
while (elem.nodeType == 3 && elem.parentNode) {
elem = elem.parentNode;
}
}catch(e){
// log
}
}
真坑啊,悬赏不是40吗,怎么收获20, 难道还得交税呀??
你可以尝试获取样式伪类::selection,然后替换内容。
不明白你说的这个什么意思。能不能举个例子?谢谢