【问题标题】:How can I know when the user selects a paragraph? [duplicate]我如何知道用户何时选择了一个段落? [复制]
【发布时间】:2015-03-02 19:40:39
【问题描述】:

我想在用户选择页面上的任何文本时执行一个操作。我试过这样的事情:

 var selObj;

       document.querySelector("p").onselect = function(){
       selObj = window.getSelection(); 
       var selectedText = selObj.toString();
       //action

但后来我发现onselect 仅适用于输入和文本区域,并且没有其他方法可以尝试这样的事情。

编辑:我知道如何获取选中的文本,我需要一个在选中文本时触发的事件!

【问题讨论】:

  • onfocus 可能会这样做
  • 不是重复的。链接的问题是如何选择文本。这个问题是当用户选择文本时如何触发事件。
  • 不是重复的。另一个问题讲述了如何在事件发生时自动选择文本。这是如何知道何时选择了文本。

标签: javascript onselect


【解决方案1】:

您可以将 mouseup 事件绑定到段落(“p”)标签。在该事件处理程序中,您可以检查:

document.selection.createRange().text

window.getSelection()

另外,你可以在这里查看 javascript to get paragraph of selected text in web page.

【讨论】:

    【解决方案2】:

    使用鼠标事件捕获选择。

    var paras = document.getElementsByClassName("para");
    
    for (var i = 0; i < paras.length; i++) {
      paras[i].addEventListener('click', getSelected, false);
    }
    
    function selectElementContents(el) {
    
      return document.getSelection()||window.getSelection();
    
    }
    
    function getSelected() {
    
      var el = document.getElementById("selectedPara");
      alert(selectElementContents(el));
    
    };
    <p class="para">select me</p>
    <p class="para">over me</p>
    <p class="para">hey here</p>

    【讨论】:

    • 如果我希望它适用于任何段落,而不是具有特定 ID 的段落?
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 2014-01-04
    • 2015-10-28
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多