javascript - 尽管选择了范围,selection.toString() 仍返回空字符串

标签 javascript range selection

我正在尝试使用以下代码在单击时选择元素的文本:

var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);

虽然文本被突出显示,但使用 Ctrl + C 时,空字符串会被复制到剪贴板。检查 selection.toString() 也会返回一个空字符串。知道为什么会发生这种情况吗?

最佳答案

嗯,我看了看你的代码并尝试了:

var selection = window.getSelection();
var selectionText = selection.anchorNode.textContent

然后我得到了选中的文本内容。

编辑:看起来这被包裹在点击功能中......等一下。

$('<your selector goes here>').click(function(e) {
  var selection = window.getSelection();
  var range = document.createRange();
  range.selectNodeContents(e.target);
  selection.removeAllRanges();
  selection.addRange(range);
  console.dir(selection.anchorNode.textContent);
  //text content should display...
  //now that the content is highlighted, you can copy it
  document.execCommand('copy');

})

关于javascript - 尽管选择了范围,selection.toString() 仍返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167692/

相关文章:

javascript - 将链接弹出窗口更改为 "Open When Screen is Loaded"弹出操作

javascript - 如果我添加 PropTypes,我需要检查 typeof 吗?

mysql - 如何只获取不同范围的最新记录?

c - 我处理器上 C 中的 int、short 和其他数据类型的范围?

javascript - 如何更改富文本编辑器文本区域中的插入符号偏移量?

java - Swing:如何忽略取消选择事件?

javascript - 双击在 iPhone Safari 浏览器中不起作用

javascript - 避免 IE 中的 "Stop Script?"对话框

javascript - 确保范围对象不在单词中间开始或结束

MySQL - 组合两条记录,每条记录的不同字段