当前位置: 首页 > 知识库问答 >
问题:

如何一次将两个div的内容复制到剪贴板

贺光华
2023-03-14

我使用下面所示的jQuery将可内容div的内容复制到剪贴板。我需要能够将另一个div的内容附加到复制的内容,以便两个div的内容同时复制到剪贴板。

这是我目前拥有的代码:

  function copywithlink() {
      var target = document.getElementById('PreviewHeader');
      var range, select;
      if (document.createRange) {
        range = document.createRange();
          range.selectNode(target)
        select = window.getSelection();
        select.removeAllRanges();
        select.addRange(range);
        document.execCommand('copy');
        select.removeAllRanges();
      } else {
        range = document.body.createTextRange();
          range.moveToElementText(target);
        range.select();
        document.execCommand('copy');
      }
    }

我需要不仅能够复制“预览标题”的内容,还需要复制另一个名为“HiddenURLdiv”的div,以便同时将它们复制到剪贴板。

共有2个答案

闻人景澄
2023-03-14

这将捕获contenteditable txt div“PreviewReader”中的编辑。答案是在页面上放置三个文本div,用于保存要连接的两个文本项,第三个文本div用于保存连接的版本。这些内容不能隐藏,但您可以使文本非常小,并与背景颜色相同,以使其对用户不可见,如下所示:

<%--Below are hidden fields that help with the copy functions.  In addition to these "hidden" divs there is the PreviewHeader header div which is very visible on the page.--%>
            <asp:Panel ID="Panel1" runat="server" Visible="True">               
                <div class="row">
                    <div id="HiddenURLdiv" contenteditable="false" style="z-index: 1; font-size: 2px; color: white; text-align: left; border: 0px solid">
                        <span>
                            <asp:Literal ID="hiddenurlliteral" runat="server"></asp:Literal></span>
                    </div>
                </div>

                <div class="row">
                    <div id="HiddenWUandLink" contenteditable="false" style="z-index: 1; font-size: 2px; color: white; text-align: left; border: 0px solid"></div>
                </div>
            </asp:Panel>
            <%--Above are hidden fields that help with the copy functions--%>

然后可以使用以下函数创建和复制连接的文本。

<%--Below script allows combining the text content of two divs into another third div and copying the content of the third div. --%>
    <script>
        function copywithlink() {
            var target = document.getElementById('PreviewHeader');
            var range, select;
            var target1 = document.getElementById('HiddenWUandLink');

            document.getElementById('HiddenWUandLink').innerHTML = ""

            if (document.createRange) {
                range = document.createRange();
                range.selectNode(target)
                document.getElementById('HiddenWUandLink').append(range.cloneContents(target.childNodes).textContent);
                document.getElementById('HiddenWUandLink').append(document.getElementById('HiddenURLdiv').innerText);

                var texttoedit = document.getElementById('HiddenWUandLink').innerText
                texttoedit = texttoedit.replace(/(\r\n|\n|\r)/gm, "");
                texttedit = texttoedit.trim()
                document.getElementById('HiddenWUandLink').innerText = texttoedit


                range = document.createRange();
                range.selectNode(target1);
                select = window.getSelection();
                select.removeAllRanges();
                select.addRange(range);
                document.execCommand('copy');
                select.removeAllRanges();
            } else {
                range = document.body.createTextRange();
                range.moveToElementText(target);
                range.select();
                document.execCommand('copy');
          <%--Overall the above script is working good but it is adding a lf before the copied text.  This does not matter for my application.--%>
            }
岳鸿畴
2023-03-14

为此,您需要能够捕获这两个内容,然后将它们附加到第三个元素。然后选择并复制。

例如:

$("#copystuff").click(function() {
var temp = $("<input>");
 $("body").append(temp);
 
 var previewHeader = $("#PreviewHeader").text();
 var HiddenURLdiv = $("#HiddenURLdiv").text();
 var contentTogether = previewHeader + " " + HiddenURLdiv;
 
 temp.val(contentTogether).select();
 
 document.execCommand("copy");
 
 $("#thecopiedtext").text(contentTogether);
 
 temp.remove();
 
});
body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
  color: #FFF;
}

a {
  color: #FFCC00;
}

#HiddenURLdiv {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="PreviewHeader">
 Hello stuff is here
</div>
<div id="HiddenURLdiv">
This one is hidden
</div>
<a href="#" id="copystuff">Copy Stuff</a>
<div id="thecopiedtext">

</div>
 类似资料:
  • 问题内容: 我已经实现了回收卡视图,并想使用按钮单击方法来复制cardView的内容。cardview中有两个文本,我只想复制内容,不同的卡片不同。我怎样才能做到这一点?这是我的Cardview适配器。 v.content.getText()。toString(),无法解析内容。 问题答案: 尝试以下

  • 问题内容: 这是我在用户单击此按钮时的代码: 如何在此div中复制文本? 问题答案: JAVASCRIPT:

  • 这是用户点击此按钮时的代码: 如何复制此div中的文本?

  • 我使用的是ReactJS,当用户单击按钮时,我想将一些div内容复制到剪贴板。 我不明白为什么这段代码不会导致数据被复制到剪贴板。当redux store的真实内容来自div时,我从中获得了价值

  • 本文向大家介绍JavaScript复制内容到剪贴板的两种常用方法,包括了JavaScript复制内容到剪贴板的两种常用方法的使用技巧和注意事项,需要的朋友参考一下 常见方法 查了一下万能的Google,现在常见的方法主要是以下两种: 第三方库:clipboard.js 原生方法:document.execCommand() 分别来看看这两种方法是如何使用的。 clipboard.js 这是clip

  • 本文向大家介绍VUE 实现复制内容到剪贴板的两种方法,包括了VUE 实现复制内容到剪贴板的两种方法的使用技巧和注意事项,需要的朋友参考一下 VUE 复制内容至剪切板(两种使用方法) 复制内容至剪切板使用的是插件'vue-clipboard2',通过官方文档会发现共有两种使用方式。 第一种方式与大多数文章类似,只粘贴代码: 这种使用方式直接将变量内容复制至剪切板,暂时没有找到处理数据后再复制的方式,