0

以下は私がやろうとしていることです:

選択したテキストをテキストエリアに表示する以下のjs関数を見つけました

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 では、テキストエリアの内容は次のとおりです。

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 に答える