如何使用 javascript 从 iframe 中获取选定的文本?

2024-01-19

<html>
 <body>
  <script type="text/javascript">

   function smth() {

    if (document.getSelection) {
    var str = document.getSelection();
    if (window.RegExp) {
      var regstr = unescape("%20%20%20%20%20");
      var regexp = new RegExp(regstr, "g");
      str = str.replace(regexp, "");
    }
    } else if (document.selection && document.selection.createRange) {
     var range = document.selection.createRange();
     var str = range.text;
    }   

    alert(str);
   }
  </script>   

    <iframe id="my"  width="300" height="225">
   .....some html ....
    </iframe>      

    <a href="#" onclick="smth();">AA</a>
 </body>    
</html>

with smth函数我可以从某些 div 中获取选定的文本,但它不适用于 iframe。 有什么想法如何从 iframe 获取选定的文本吗?


文档.getSelection

位于外部文档上。要在 iframe 中选择文档,您需要获取内部文档:

var iframe= document.getElementById('my');
var idoc= iframe.contentDocument || iframe.contentWindow.document; // ie compatibility

idoc.getSelection()

但请注意,WebKit 不支持document.getSelection() or document.selection。尝试将其替换为window.getSelection()它适用于 Firefox 和 WebKit,但返回一个选择对象(范围周围的集合/包装器),它需要字符串:

var idoc= iframe.contentDocument || iframe.contentWindow.document;
var iwin= iframe.contentWindow || iframe.contentDocument.defaultView;

''+iwin.getSelection()

我不确定这有什么意义:

if (window.RegExp) {
  var regstr = unescape("%20%20%20%20%20");
  var regexp = new RegExp(regstr, "g");
  str = str.replace(regexp, "");
}

RegExp是基本的 JavaScript,可以追溯到最早的版本;它永远在那里,你不必去嗅它。多个空格的 URL 编码是完全没有必要的。您甚至不需要 RegExp 本身,字符串替换可以写为:

str= str.split('     ').join('');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 javascript 从 iframe 中获取选定的文本? 的相关文章

随机推荐