首页 > 解决方案 > 使用 document.execCommand('copy',false,null) 复制到剪贴板仅适用于 MS 浏览器

问题描述

我有一个列出大量数据的网格。对于每个数据行,我都有一个将特定行复制到系统剪贴板的按钮。

行按钮/链接调用 javascript 方法,在该方法中我调用 MVC 控制器方法并将数据传递给 textarea(应用样式以使其不可见)。

直到几天前,它还可以在所有浏览器上运行(主要需要在 IE、Edge、Chrome 和 Safari 中运行)。现在代码不起作用。

我的javascript方法是这样的:

function copytoclip(id) {
  $.get('/controller/details', {
        'commentid': id
      }, function(data) {
        var txt = document.getElementById('<%=txtcontrol.ClientID%>');
        txt.value = data;
        txt.textContent = data;

        txt.select();

        try {

          //Below line returns false always in Chrome and Safari
          var res = document.execCommand('copy', false, null);
          if (res) {
            alert('Copy to clipboard successful');
          } else {
            alert('Your browser doesn'
              t support clipboard access ');}
            }
            catch (err) {
              alert(err.message);
            }
          });
      }

结果 (res) 在 Chrome 和 Safari 中总是错误的。我尝试将 URL(http://servername:portname - 在 localhost 中运行;即使它在暂存中的 DNS 失败)添加到 Chrome 的受信任站点列表中以进行剪贴板访问,但在静脉中。

谁能指出为什么 execCommand 在 Chrome 和 Safari 中总是返回 false ?

标签: javascript

解决方案


推荐阅读