javascript - 复制到剪贴板而不附加文本区域

标签 javascript google-chrome-extension

我有以下代码,用于chrome插件的js将某些数据从某个网页复制到剪贴板(稍后我将编写代码从网页获取数据)。

// 1. Create the button
var testButton = document.createElement("button");
testButton.innerHTML = "Copy";

// 2. Append somewhere
var btnPos = document.getElementsByClassName("menu-userdetails")[0];
btnPos.appendChild(testButton);

// 3. Add event handler
testButton.addEventListener ("click", copyToClipboard);

function copyToClipboard() {
    var textArea = document.createElement("textarea");
    textArea.value = "test copying";
    btnPos.appendChild(textArea);
    textArea.select();

    try {
        var successful = document.execCommand('copy');
        var msg = successful ? 'successful' : 'unsuccessful';
        console.log('Copying text command was ' + msg);
    } catch (err) {
        console.log('Oops, unable to copy');
    }

    document.body.removeChild(textArea);
}

在此代码中,我必须在复制之前将文本区域附加到网页(单击按钮后)。但我不想显示文本区域,我只想复制文本区域内的数据而不显示文本区域。

最佳答案

textArea.style.height = "0px";
textArea.style.width = "0px";
textArea.style.opacity = "0";

添加此代码会隐藏文本区域。

但是更好的解决方案已经在我的代码中,我只是犯了一个小错误。 我写的

document.body.removeChild(textArea);

虽然实际上我必须写

btnPos.removeChild(textArea);

这会在复制后删除文本区域,而且速度非常快,您甚至看不到文本区域的出现和消失。

关于javascript - 复制到剪贴板而不附加文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821899/

相关文章:

javascript - ES6 为多个数组运行不同的函数

javascript - Chrome 扩展程序将文本添加到可编辑的上下文菜单中

javascript - chrome.webRequest redirectUrl,URL 保存在 chrome.storage.local 中

google-chrome - Chrome 扩展 - 以编程方式绕过代理

multithreading - Google Chrome 扩展程序是否支持多线程编程?

javascript - 扩展程序读取错误数据 + gt> 不起作用

javascript - 使用 Javascript 使用 1 个超链接填写 2 个表单输入字段

javascript - 将数组数组的字符串转换为 Javascript 数组数组的优雅方法?

javascript - Firefox 不支持 Angular 方向更改事件

javascript - 对 JavaScript 中的递归和执行流程有更清晰的解释吗?