【问题标题】:Clipboard.writeText() does'nt work on Mozilla & IEClipboard.writeText() 不适用于 Mozilla 和 IE
【发布时间】:2019-02-10 03:26:13
【问题描述】:

我正在使用以下函数将一些文本放入我的剪贴板:

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 中找到了这个tutorial,但该示例似乎在Chrome 中运行良好,而在其他浏览器中则不行。我在这里做错了什么?

【问题讨论】:

  • 使用不受广泛支持的功能? (它将在 FF63 中出现)。
  • document.execCommand 不是 Document.execCommand。 IE 具有用于剪贴板访问的安全区域设置...确保您接受默认的 IE 安全区域设置。 (Internet 选项>安全选项卡,单击“将所有区域重置为默认值”。您是在使用本地 html 文件进行开发/学习吗?还是在使用服务器或本地主机上的 html 文件?

标签: javascript google-chrome internet-explorer mozilla


【解决方案1】:

我不是 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?

【讨论】:

  • 其实我也做过类似的事情。但还是对结果不满意。
【解决方案2】:
var text = document.getElementById('copyText');
text.select();  
document.execCommand("copy");  

【讨论】:

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 2011-02-12
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多