首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typescript getSelection消失

Typescript getSelection消失
EN

Stack Overflow用户
提问于 2018-02-23 01:52:16
回答 1查看 960关注 0票数 0

在Vue和typescript中,我有自己的上下文菜单:

代码语言:javascript
复制
<context-menu id="context-menu" ref="ctxMenu">
      <li @click="ctxMenuClickItem1($event)" v-on:mouseover="menuItemMouseover($event)" v-on:mouseleave="menuItemMouseleave($event)" v-bind:style="getMenuItemStyle()" >Open in TMS</li>
      <li @click="ctxMenuClickItem2($event)" v-on:mouseover="menuItemMouseover($event)" v-on:mouseleave="menuItemMouseleave($event)" v-bind:style="getMenuItemStyle()" >Open in OnDemand</li>
      <li @click="doCopy()" >Copy</li>
    </context-menu>

当我在页面上选择文本,然后单击上下文菜单(doCopy)中的第三项时,所选内容将消失。

Do copy函数如下所示:

代码语言:javascript
复制
 doCopy: function () {
  debugger;
  var selection = window.getSelection();
},

单击后选择为空: selection.toString()为"“

如何复制选中的文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-23 02:23:35

当您在上下文菜单中单击时,您的选择正在折叠(或重置),可能是因为移动了焦点。你需要在事件'contextmenu‘触发时获得选择,并在doCopy中恢复选择。JS示例:

代码语言:javascript
复制
var range = document.createRange();
docucment.addEventListener('contextmenu', (ev) => {
    let selection = window.getSelection();
    if(selection.rangeCount > 0) {}
    range = selection.getRangeAt(0);
})
doCopy = function(){
  let selection = window.getSelection();
  selection.removeAllRanges();
  selection.addRange(range);
  document.execCommand('copy');//save selection in buffer

}

如果在contenteditable元素中选择文本,则需要在该元素中设置焦点。

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

https://stackoverflow.com/questions/48934126

复制
相关文章

相似问题

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