用于从不可编辑元素中选择文本的Javascript事件

时间:2017-03-28 06:08:51

标签: javascript angularjs

是否有任何事件在javascript中可用于来自不可编辑元素(如div或span)的精选文本。 我想从段落中选择文本,并从页面上的打开弹出颜色框突出显示文本。 我通过用户结束文本选择打开彩盒。那么如何在用户结束文本选择时捕获事件。 我尝试过鼠标事件,比如:

var slideElement = angular.element('.myElement', elem);
slideElement.bind('mouseup', (event) => {
  // Funtionality goes here
)};

它适用于桌面,但在触摸设备上它将无法正常工作。因此,我可以以适当的方式处理选择结束事件,以便它适用于桌面和触摸设备。 当我们从触摸设备中选择文本时,触摸结束事件也将无效。  感谢

1 个答案:

答案 0 :(得分:0)

用于从事件处理程序中的divspan中选择文本的最佳浏览器兼容代码如下:



function SelectText(element) {
  var doc = document,
    text = doc.getElementById(element),
    range, selection;
  if (doc.body.createTextRange) {
    range = document.body.createTextRange();
    range.moveToElementText(text);
    range.select();
  } else if (window.getSelection) {
    selection = window.getSelection();
    range = document.createRange();
    range.selectNodeContents(text);
    selection.removeAllRanges();
    selection.addRange(range);
  }
}

document.onclick = function(e) {
  if (e.target.className === 'click') {
    SelectText('selectme');
  }
};

.click {
  color: red;
  cursor: pointer;
}

<div id="selectme">
  <p>Some text goes here!</p>
  <p>More text!</p>
</div>
<p class="click">Click me!</p>
&#13;
&#13;
&#13;

这也适用于移动设备。