2013-05-09 82 views
3

我使用此代码从窗口文档中选择文本。这段代码在所有浏览器中工作正常:它返回选定的文本,但在IE8中它不给出选定的文本。相反,它会提供所选行的整个HTML。任何人都可以为我提供解决方案吗?IE8不会使用鼠标指针返回选定的文本

例子:

<B><U><SPAN style="LINE-HEIGHT: 150%; FONT-FAMILY: 'Arial', 
'sans-serif'; FONT-SIZE: 12pt">Summary</SPAN></U></B> 

我只想摘要因此,所有主要的浏览器返回此除了IE8。

<script type="text/javascript"> 
    function getSelectionText(id) { 
     var html = ""; 
     if (typeof window.getSelection != "undefined") { 
      var sel = window.getSelection(); 
      if (sel.rangeCount) { 
       var container = document.createElement("div"); 
       for (var i = 0, len = sel.rangeCount; i < len; ++i) { 
        container.appendChild(sel.getRangeAt(i).cloneContents()); 
       } 
       html = container.innerHTML; 
      } 
     } else if (typeof document.selection != "undefined") { 
      if (document.selection.type == "Text") { 
       html = document.selection.createRange().htmlText; 
      } 
     } 
     document.getElementById(id).value = html; 
     //document.getElementById(id).value = html; 
    }  
</script> 
+0

您可能会发现['Rangy'](https://code.google.com/p/rangy/)有用。 – 2013-05-09 09:08:02

+0

您的示例HTML非常糟糕。 – Jared 2013-05-09 09:17:21

回答

1

你应该看看rangy - 一个跨浏览器的JavaScript范围和选择库。在他们自己的话说:

它提供了所有主流浏览器执行常见的DOM范围和选择任务,抽象掉的互联网浏览器之间的这种功能非常不同的实现方式直至并包括版本8简单的基于标准的API和符合DOM标准的浏览器。

+0

感谢user1846192,但是如何使用它。 – SANDEEP 2013-05-09 09:11:51

+0

有链接到[文档](https://code.google.com/p/rangy/wiki/DocumentationHome)和[演示](http://rangy.googlecode.com/svn/trunk/demos/index。 HTML)在答案链接的页面上。此外,页面上还有[基本用法](https://code.google.com/p/rangy/#Basic_usage)部分。 – 2013-05-09 09:14:17

0
变化

HTML = container.innerHTML;

HTML = container.innerText;

0

的问题是,在IE8下面一行

html = document.selection.createRange().htmlText; 

改成这样

html = document.selection.createRange().text; 

下面是一个不错的简单功能,似乎为我

function getSelectedText() { 
    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; 
    return txt; 
} 
正常工作

希望这会有所帮助

+0

谢谢马克沃尔特斯,我会检查... – SANDEEP 2013-05-10 06:08:23