首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测选定的文本不能正常工作

检测选定的文本不能正常工作
EN

Stack Overflow用户
提问于 2019-11-24 15:36:13
回答 1查看 27关注 0票数 0

我正在尝试使用javascript来检测div中的文本是否被选择为textarea格式。HTML是这样的:

代码语言:javascript
复制
<div id="rte-test" class="rich-text-editor">
    <ul class="toolbar">
        <li> <a href="#" class="command" id="...">...</a> </li>
    </ul>
    <div class="textarea" id="textareaContent" contentEditable="true"></div>
</div>

我尝试了这个javascript代码:

代码语言:javascript
复制
var command = document.getElementsByClassName("command");

for(var i=0; i<command.length; i++) {
  command[i].addEventListener("click", function() {
    var btn = this;
    var content = window.document.getElementById("textareaContent");
    if (content.getSelection) {
      console.log(content.getSelection() + ' selected. ' + btn.id);
    } else {
      console.log('nothing is selected. ' + btn.id);
    }
  });
}

使用此代码,即使在if/else上选择了某些内容,也只有"nothing is select“选项是由textarea实现的。

我也试过这个:

代码语言:javascript
复制
var command = document.getElementsByClassName("command");

for(var i=0; i<command.length; i++) {
  command[i].addEventListener("click", function() {
    var btn = this;
    if (window.getSelection) {
      console.log(window.getSelection() + ' selected. ' + btn.id);
    } else {
      console.log('nothing is selected. ' + btn.id);
    }
  });
}

使用此代码,即使没有选择任何内容,if/else也只会达到" selected“选项。

有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-24 15:52:56

试一试

代码语言:javascript
复制
    if (window.getSelection().toString()) {
      console.log(window.getSelection() + ' selected. ' + btn.id);
    } else {
      console.log('nothing is selected. ' + btn.id);
    }

window.getSelection()返回一个非空对象,因为它不是空的,所以它始终是真的。当您将window.getSelection()放入console.log中时,会自动调用toString()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59019338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档