Clipboard.writeText()在Mozilla和IE上无法正常工作

5

我正在使用以下函数将一些文本复制到我的剪贴板:

navigator.clipboard.writeText('Text to be copied').then(function() {
            console.log('Template copied to clipboard')
          }, function() {
            console.log('Unable to write to clipboard. :-(');
          });

很遗憾,在Mozilla和IE上它无法工作。在Chrome上表现良好。 我已经尝试使用以下方法:

Document.execCommand('copy')

我在developers.google.com上发现了这个教程,但是示例似乎只能在Chrome浏览器中正常工作,其他浏览器不能正常工作。我做错了什么?

1
使用了一个不被广泛支持的功能?(它将在FF63中推出)。 - Kaiido
document.execCommand 不是 Document.execCommand。IE 有一个剪贴板访问的安全区域设置... 确保您接受默认的 IE 安全区域设置。(Internet Options>Security tab, click "Reset all zones to default"。您是在使用本地 HTML 文件进行开发/学习吗?还是在使用服务器或本地主机上的 HTML 文件? - Rob Parsons
2个回答

12

我不是 UI Web 开发专家。我经历过类似的情况,我也尝试使用 Document.execCommand('copy'),但它对我也没有用。所以,我用以下代码在 IE 和 Chrome 上都实现了这个功能。希望这段代码能帮助你解决问题。

$scope.CopyToClipBoard = function (text) {        
    if (navigator.clipboard != undefined) {//Chrome
        navigator.clipboard.writeText(text).then(function () {
            console.log('Async: Copying to clipboard was successful!');
        }, function (err) {
            console.error('Async: Could not copy text: ', err);
        });
    }
    else if(window.clipboardData) { // Internet Explorer
        window.clipboardData.setData("Text", text);
    }
};

我从这里获取了IE的解决方案:How do I copy to the clipboard in JavaScript?


1
实际上,我做过类似的事情。但是我仍然对结果不满意。 - deltaforce

0
var text = document.getElementById('copyText');
text.select();  
document.execCommand("copy");  

3
请提供更多细节以扩展您的答案,例如工作代码或文档引用。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接