0

この関数を介してユーザーが選択したコンテンツを抽出しています:

 function getSelectionHTML() {

  var userSelection;
  if (window.getSelection)
  {

   // W3C Ranges
   userSelection = document.getElementById('axPage').contentWindow.getSelection();
   // Get the range:
   if (userSelection.getRangeAt)
    var range = userSelection.getRangeAt (0);
   else
   {
    var range = document.createRange ();
     range.setStart (userSelection.anchorNode, userSelection.anchorOffset);
     range.setEnd (userSelection.focusNode, userSelection.focusOffset);
   }

   var clonedSelection = range.cloneContents ();
   var div = document.createElement ('div');
   div.appendChild (clonedSelection);
   return div.innerHTML;

  }
  else if (document.selection)
  {
userSelection = self.frames['axPage'].document.selection.createRange();
   return userSelection.htmlText;
  }
  else
  {

   return '';

  }

  };

抽出は正常に機能していますが、Internet Explorer で選択したテキストの元のマークアップを取得する方法が見つからないようです。Firefox のように DocumentFragment を取得する方法はありますか? 私は両方のシステムの異なる処理とアプローチについて知っていますが、おそらく誰かが javascript / ECMA で HREF の厄介な ...jQueryXXXXXXXXXXXXX="12" アドオンとその厄介な大文字のタグ名と属性名を取り除くための実用的なアプローチを見つけたかもしれません。

繰り返しますが、正確なマークアップを選択することが不可欠です。

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

1

IE での唯一のオプションは、選択境界ポイント間で DOM を移動するコードを作成するかhtmlText、選択 TextRange から使用することです。最初のオプションはかなり複雑です。2番目のアプローチの問題が何であるかがよくわかりません.htmlTextから取得したHTMLの何が問題なのか、より正確に説明できますか?

于 2009-10-29T11:26:17.430 に答える
0

助けてくれてありがとう、私はついにそれを理解しました。小文字のタグを使用して Internet Explorer で選択したテキストを取得する必要がある場合は、このhttp://codingforums.com/showthread.php?t=148450関数を試してください。 、14 href=""-closing " の直後に、マークアップを div にコピーしてその innerHTML を読み取ることが解決策です。

それが役立つことを願っています

于 2009-10-31T01:23:03.910 に答える