Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
476 views
in Technique[技术] by (71.8m points)

javascript - Can you use document.execCommand('copy') on the contents of a div?

If I copy an html table manually, I can paste it into a Google Doc with the formatting preserved (it looks like a table).

How can I copy the contents programmatically, with a button, and paste as an html table? Something like the following...

evar copydeck = $("<div>").html(htmlToInsert);
$('body').append(copydeck);
copydeck.select();
document.execCommand('copy');
copydeck.remove();

The above code does not work...but this does:

copydeck = $("<textarea>").val(this.list.join("
"));
$('body').append(copydeck);
copydeck.select();
document.execCommand('copy');
copydeck.remove();

I guess it is because the element must be selectable - like an input or htmlarea field. But they can't hold html (or it is just plain text, not html).

Any way to copy and paste HTML?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Yes!

   function copy() {
      var target = document.getElementById('my-div');
      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');
      }
    }
  <div id="my-div" style="border:1px dashed #999; color:#666; background:#EEE; padding:2px 5px; margin:10px 0;">
    Hello stackoverflow!))
  </div>
  <div>
    <input onclick="copy()" type="button" value="Copy">
  </div>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.8k users

...