javascript - addRange 不适用于 Chrome 版本 61

标签 javascript google-chrome

我一直在使用下面的代码来处理复制事件:

range.selectNodeContents(el);
sel.removeAllRanges();
sel.addRange(range);

我的一些用户现在报告说复制事件在 Chrome 中不起作用。我注意到自版本 61 发布以来,这似乎正在发生。在较新版本的 Chrome 中,是否有替代方法可以将元素内容复制到剪贴板?

最佳答案

试试这段代码:

let sel = window.getSelection();
    sel.removeAllRanges();
    let range = document.createRange();
    range.selectNodeContents(el);
    el.contentEditable = true; 
    el.focus();
    sel.addRange(range);

如果此代码不起作用,请尝试 在没有

的情况下使用你的代码
sel.removeAllRanges();

因为 removeAllranges 将被弃用,并且选择只能有一个范围

我使用了代码(例子)

let range = document.createRange();
let sel = window.getSelection();
range.selectNodeContents(document.body);
sel.addRange(range);

它可以工作(在 chrome 62 中测试)。 可能 el 节点不可见或 DOM 没有此节点。没有所有代码,我无法帮助你。

关于javascript - addRange 不适用于 Chrome 版本 61,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293507/

相关文章:

google-chrome - chrome 原生消息 : how to receive > 1MB

javascript - 选择器 'nth-last-child(n)' 在 chrome 中不起作用

javascript - Web 音频 API 获取 <audio> 元素的 AudioBuffer

javascript - Highcharts 将标签分配给 x 轴最大值

javascript - 返回对象时出现 Angular 资源错误

javascript - 如何获取 url 中的特定参数并将其添加到 Chrome 扩展中的另一个 url 中?

javascript - 如何根据javascript中的输入值更改背景框

html - 如何删除仅在 Chrome 中以不同缩放级别显示的透明图像叠加层上的边框?

google-chrome - 打开 Chrome ://URL's from the command line?

objective-c - 用于实现 Google Chrome 搜索的 Cocoa 控件是什么?