javascript - 在 h3 标签内复制文本时,复制到剪贴板不是功能

标签 javascript copy clipboard

我正在尝试将文本复制到 h3 标签内的剪贴板。我在 copyText.select() 代码行收到以下错误。

未捕获类型错误:copyText.select 不是函数 在 HTMLDivElement。

编辑:在输入标签上使用时,复制到剪贴板功能有效,但在 h3 标签内时无效。

HTML

<div class="colorDiv" id="firstColorObject">
    <h3 class="colorCode" id="p1" value="123">#Color 1</h3>
</div>

JavaScript

document.querySelector("#firstColorObject").addEventListener("click", function(){
    var copyText = document.getElementById("p1");

    copyText.select();
    document.execCommand("copy");
    alert("Copied the text: " + copyText.value);

}, false);

最佳答案

您可以调用select<input> - 元素但不带 <h3> -元素。

不过,您可以利用 <input>当您分配 #p1 的内容时在调用 select 之前转到隐藏字段用它。

注意:调用select仅当您将实际可见的字段包裹在 <div> 周围时,使用隐藏字段才有效- 隐藏的元素(仅使用 opacity:0 进行测试)。无法从像这样的真正隐藏的输入中复制值(通过 selectdocument.execCommand("copy")):

<input type="hidden" id="copyText"/>

希望我下面的示例对您有所帮助(要执行它,请单击 "Run Code snippet" - 按钮):

document.querySelector("#firstColorObject").addEventListener("click", function(){

    var p1 = document.getElementById("p1");
    
    // set "#Color 1" with the hidden field so that you can call select on it
    var hiddenField = document.getElementById("copyText");
    hiddenField.value = p1.innerHTML;
    hiddenField.select();
    document.execCommand("copy");
    
    alert("Copied the text: " + hiddenField.value);

}, false);
<div class="colorDiv" id="firstColorObject">
    <h3 class="colorCode" id="p1" value="123">#Color 1</h3>
    <div style="opacity:0">
        <input type="text" id="copyText"/>
    </div>
</div>

关于javascript - 在 h3 标签内复制文本时,复制到剪贴板不是功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544928/

相关文章:

javascript - 所有选定复选框的 jQuery 数组(按类)

从源 wchar* 中的位置 a 复制到位置 b 从位置 c 复制到目标 wchar*,不以 null 终止

C# 无法使用 Directory.GetDirectories 找到路径的一部分

vba - 移动图像而不复制/粘贴

javascript - rails 3.2 和 mercury editor 无法通过编辑/路由找到对象

javascript - .removeClass 不起作用 addClass 是如何工作的?

java - 从 JSObject 中获取 JavaObject

c++ - std::copy 设置指向 null 的指针

python - 如何将 Jupyter 笔记本中单元格的输出复制到剪贴板?

c++ - 在 win32 控制台应用程序中跟踪剪贴板更改数据?