首页 新闻 会员 周边

OPERA下DIV失去焦点后DIV中选中的内容变不选中了

0
悬赏园豆:40 [已解决问题] 解决于 2012-12-12 09:47

小弟正在弄个编辑器。想实现的效果就是在可编辑的DIV中,选中一段文本,然后点击一个A链接往这个DV中插入字符。

其它浏览器没有问题,唯独OPERA下,我选中一段文本,再点A链接想插入字符,本来应该是将这段选中的文本替换掉,但是,却插入到了DIV中的文本的最前面。

于是我想了个办法,在DIV的mousedown的时候,获取鼠标光标的起始位置,并保存下来。然后我在插入字符之前,重新设置光标的起始位置,也就再次选中了,然后再插入。

 

问题是,不知道怎样在非IE浏览器【比如opera】下获取光标的起始位置?

问题补充:

回liner-z,不明白你说的这个什么意思。能不能举个例子?谢谢

superfans98的主页 superfans98 | 初学一级 | 园豆:166
提问于:2012-11-19 23:31
< >
分享
最佳答案
0

很久之前做过一个编辑器,复制了一点代码给你看看是不是你需要的,这是获取选中的标签的,你只需要拿到选中的标签替换内容就行了

 

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

}
}

收获园豆:20
js明哥哥 | 菜鸟二级 |园豆:243 | 2012-12-11 17:00

真坑啊,悬赏不是40吗,怎么收获20, 难道还得交税呀??

js明哥哥 | 园豆:243 (菜鸟二级) | 2012-12-12 09:50
其他回答(1)
0

你可以尝试获取样式伪类::selection,然后替换内容。

收获园豆:20
Kiinlam | 园豆:185 (初学一级) | 2012-11-20 12:43

不明白你说的这个什么意思。能不能举个例子?谢谢

支持(0) 反对(0) superfans98 | 园豆:166 (初学一级) | 2012-11-21 02:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册