如何使用链接复制到Chrome扩展程序中的剪贴板?

时间:2018-08-26 14:18:07

标签: javascript google-chrome-extension

我最近第一次创建了chrome扩展程序。我的页面上有一个复制按钮,当扩展程序作为网页加载时,该按钮可以正常工作。但是,当我将其作为扩展加载时,复制功能不起作用。

我的manifest.json权限如下:

"permissions": [
  "webNavigation",
  "storage",
  "clipboardWrite",
  "clipboardRead"
]

我的popout.html页中要复制的代码如下:

        <div id="legacyCopyLabel">
            <a onclick="copyText(getElementById('legacy'))" class="alignright">COPY</a>
        </div>

和我的JavaScript代码中的copyText()函数如下:

function copyText(element) {
    var range, selection, worked;

    if (document.body.createTextRange) {
      range = document.body.createTextRange();
      range.moveToElementText(element);
      range.select();
    } else if (window.getSelection) {
      selection = window.getSelection();        
      range = document.createRange();
      range.selectNodeContents(element);
      selection.removeAllRanges();
      selection.addRange(range);
    }

    try {
      document.execCommand('copy');
      updateStatus ('Copied address', 'info');
    }
    catch (err) {
      alert('Unable to copy the address');
    }
  }

如果要查看完整的代码,请点击这里:https://github.com/markallisongit/handcash-chrome

Chrome扩展程序位于以下位置的chrome存储中:https://chrome.google.com/webstore/detail/handcash-handle-converter/bnkohbkbipagdhplhkhgonbalbjigpoh

1 个答案:

答案 0 :(得分:1)

它不起作用,因为您使用内联JS:<a onclick="...">
根据Chrome的内容安全策略:

  

将不执行嵌入式JavaScript。此限制禁止内联块和内联事件处理程序(例如)。

解决方案是将您的代码放入单独的.js文件中,并将其作为普通的JS脚本包含在内。