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。第一个选项将非常复杂。我真的不明白第二种方法的问题是什么:您能否更精确或举例说明您从 htmlText 获得的 HTML 有什么问题?

于 2009-10-29T11:26:17.430 回答
0

谢谢你的帮助,我终于弄明白了。如果您需要在 Internet Explorer 中获取带有小写标签的选定文本,请尝试此http://codingforums.com/showthread.php?t=148450函数,如果您使用 jquery 并且有讨厌的小 .jQueryXXXXXXXXXXXXX="12" 13 , 14 在每个 href=""-close" 之后,您的解决方案是将标记复制到 div 并读取其 innerHTML。

希望有帮助

于 2009-10-31T01:23:03.910 回答