首页 新闻 搜索 专区 学院

js如何实时精确地获取鼠标选中的html内容,代码如下:

1
悬赏园豆:100 [已解决问题] 解决于 2012-09-21 15:26

function getHtml(win){
  if (win.getSelection) {
     var range=win.getSelection().getRangeAt(0);
     var container = win.document.createElement('div');
     container.appendChild(range.cloneContents());
     return container.innerHTML;
  }
  else if (win.document.getSelection) {
     var range=win.getSelection().getRangeAt(0);
     var container = win.document.createElement('div');
     container.appendChild(range.cloneContents());
     return container.innerHTML;
   }
   else if (win.document.selection) {
      return win.document.selection.createRange().htmlText;
   }
}

这段代码有时可以获取到带样式的html,但有时获取的却是纯文本,不知道是什么原因,我想精确地获取选中的html,不知道该如何获取?

jfcjyo的主页 jfcjyo | 初学一级 | 园豆:10
提问于:2012-09-19 16:35
< >
分享
最佳答案
1

有个叫rangy 的库, 你可以试试。 应该刚好满足你的需求。

收获园豆:50
undefined | 小虾三级 |园豆:698 | 2012-09-20 15:04
其他回答(1)
0

你选中了文本,这个时候可以找到文本的父元素,这样就可以得到这个元素的html了。如果有多个兄弟节点需要去除。

收获园豆:50
chenping2008 | 园豆:9836 (大侠五级) | 2012-09-19 17:31

这样不行的,呵呵,比如<li>222<font size=7>1111111111111</font></li>,如果我只选中了三个一的话,那父节点该算到什么时候停呢?感觉不是很精确,不知道有没有更好的办法,呵呵

支持(0) 反对(0) jfcjyo | 园豆:10 (初学一级) | 2012-09-19 17:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册