Click button copy to clipboard using jQuery

前端 未结 21 2104
醉话见心
醉话见心 2020-11-21 23:11

How do I copy the text inside a div to the clipboard? I have a div and need to add a link which will add the text to the clipboard. Is there a solution for this?

         


        
21条回答
  •  一整个雨季
    2020-11-22 00:08

    Most of the proposed answers create an extra temporary hidden input element(s). Because most browsers nowadays support div content edit, I propose a solution that does not create hidden element(s), preserve text formatting and use pure JavaScript or jQuery library.

    Here is a minimalist skeleton implementation using the fewest lines of codes I could think of:

    //Pure javascript implementation:
    document.getElementById("copyUsingPureJS").addEventListener("click", function() {
      copyUsingPureJS(document.getElementById("copyTarget"));
      alert("Text Copied to Clipboard Using Pure Javascript");
    });
    
    function copyUsingPureJS(element_id) {
      element_id.setAttribute("contentEditable", true);
      element_id.setAttribute("onfocus", "document.execCommand('selectAll',false,null)");
      element_id.focus();
      document.execCommand("copy");
      element_id.removeAttribute("contentEditable");
      
    }
    
    //Jquery:
    $(document).ready(function() {
      $("#copyUsingJquery").click(function() {
        copyUsingJquery("#copyTarget");
      });
     
    
      function copyUsingJquery(element_id) {
        $(element_id).attr("contenteditable", true)
          .select()
          .on("focus", function() {
            document.execCommand('selectAll', false, null)
          })
          .focus()
        document.execCommand("Copy");
        $(element_id).removeAttr("contenteditable");
         alert("Text Copied to Clipboard Using jQuery");
      }
    });
    #copyTarget {
      width: 400px;
      height: 400px;
      border: 1px groove gray;
      color: navy;
      text-align: center;
      box-shadow: 0 4px 8px 0 gray;
    }
    
    #copyTarget h1 {
      color: blue;
    }
    
    #copyTarget h2 {
      color: red;
    }
    
    #copyTarget h3 {
      color: green;
    }
    
    #copyTarget h4 {
      color: cyan;
    }
    
    #copyTarget h5 {
      color: brown;
    }
    
    #copyTarget h6 {
      color: teal;
    }
    
    #pasteTarget {
      width: 400px;
      height: 400px;
      border: 1px inset skyblue;
    }
    
    

    Heading 1

    Heading 2

    Heading 3

    Heading 4

    Heading 5
    Heading 6
    Preserve formatting


    Paste Here to See Result

提交回复
热议问题