我正在制作一个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')
行将被执行,我在控制台中看不到任何错误,但文本未复制到剪贴板。
我在这里做错了什么?
答案 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方法应该可以工作。如果这对您有用,请告诉我。