将文本复制到工具栏上的剪贴板按钮单击

时间:2017-11-15 18:27:16

标签: javascript clipboard firefox-webextensions

我正在制作一个ff webextension,它是工具栏上的browser_action按钮,单击它时会生成一个密码并将其复制到剪贴板。 我在清单中添加了clipboardWrite权限,我的代码非常简单:

HTML:

<body>
  <form>

      <label for"pw">your password</label>
      <input type="text" id="pw" name="pw">

      <button id="copy">copy to clipboard</button>

  </form>
  <script src="pwgen.js"></script>
</body>

现在,当我点击copy按钮时,执行此js:

function copypasstoclippboard() {
  var copyText = document.getElementById('pw');
  copyText.select();
  document.execCommand('copy');
}

如果我通过按下按钮来执行该功能,但如果我在加载弹出窗口的html时执行相同的功能,document.execCommand('copy')行将被执行,我在控制台中看不到任何错误,但文本未复制到剪贴板。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

出于安全原因,这是Firefox强加的限制。但是,有一种方法可以使它工作。我没有测试过这段代码,但这是一个想法(来自后台脚本):

var code = `
  window.addEventListener("paste", function(){
    var copyText = document.getElementById("pw");
    copyText.select();
    document.execCommand('copy');
  });
  document.execCommand("paste");
`
browser.tabs.executeScript({code: code});

您触发允许复制到剪贴板的事件(在本例中为粘贴)。在这种情况下,您正在内容脚本中运行代码,因此execCommand方法应该可以工作。如果这对您有用,请告诉我。