现在的位置: 首页 > javascript > 正文
获取页面选中内容文本(兼容input和textarea)
2015年07月09日 javascript ⁄ 共 1356字 评论数 1 ⁄ 被围观 3,768 views+

获取页面被选中文本的内容,无非就是window.getSelection和document.getSelection以及document.select。支持document.getSelection的浏览器一定支持window.getSelection。而document.select是IE6,7,8,9,10独有的。

window.getSelection和document.getSelection都无法获取input和textarea里面被选中的文本内容,需要结合document.activeElement使用。document.select.createRange()是支持input和textarea的.

代码里有些注释,本函数兼容chrome,IE(6~11),opera,Firefox等主流浏览器,处IE以外,其它浏览器没有测试低版本。

  1. function getSelectionText() {
  2.     var selText = "";
  3.     if (window.getSelection) {  // 只有IE6,IE7,IE8不支持
  4.         var sel = document.activeElement;
  5.         if (sel &&
  6.             (sel.tagName.toLowerCase() == "textarea" ||
  7.              (sel.tagName.toLowerCase() == "input" &&
  8.               sel.getAttribute("type").toLowerCase() == "text")))
  9.         {
  10.             var text = sel.value;
  11.             selText = text.substring(
  12.                 sel.selectionStart,
  13.                 sel.selectionEnd
  14.             );
  15.         }
  16.         else {
  17.             var selRange = window.getSelection();
  18.             selText = selRange.toString();
  19.         }
  20.     } else {
  21.         if (document.getSelection) {  // 只有IE6,IE7,IE8,Firefox不支持. 代码并不会执行到这个分支
  22.             range = document.getSelection();
  23.             selText = range.toString();
  24.         } else if (document.selection.createRange) { // 只有IE6~10支持
  25.             var range = document.selection.createRange();
  26.             selText = range.text;
  27.         }
  28.     }
  29.     return selText;
  30. }

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. 111fed : 2016年08月31日09:41:43  -49楼 @回复 回复

    嗯 写的不错

给我留言

留言无头像?


×