0

以下是我正在尝试做的事情:

我找到了下面的 js 函数,它在 textarea 中显示选定的文本

function getSelected() {
  var txt = '';
  if (window.getSelection) {
    txt = window.getSelection();
  } else if (document.getSelection) {
    txt = document.getSelection();
  } else if (document.selection) {
    txt = document.selection.createRange().text;
  } else return;
  document.selectedtext.value =  txt;
}

<textarea name="selectedtext" rows="5" cols="20"></textarea>

但我想要实现的是在复制的同时获取 HTML 元素。例如:

<div>some text is entered here</div>
<div>line2</div>

使用上面的 JS,textarea 中的内容是:

some text is entered here
line2

我期待的是:

<div>some text is entered here</div>
<div>line2</div>
4

1 回答 1

0

这是一个比乍一看有点复杂的问题,因为存在各种边缘情况,即用户选择容器中的某些内容而不是其全部内容。在这种情况下,它应该用父 div 智能地包装片段吗?您是在尝试继承样式还是多于一层的 DOM 层次结构?我强烈推荐Rangy Library,它处理了许多这些陷阱。特别是我会从选择对象中检查toHtml()方法。

于 2012-06-21T02:13:20.757 回答