addRange 在 Chrome 版本 61 上不起作用



我一直使用以下代码来处理复制事件已有一段时间了:

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 没有这个节点。没有所有代码,我无法帮助您。

最新更新