title: Manipulating the clipboard with JavaScript breaks formatting
body: <p>I am writing a script to append attribution linking to a user's clipboard -- similar to the functionality that you see from Tynt. </p>
  
  <p>Functionally, the script below is working fine, except that it is removing line breaks and formatting. Is there anyway to preserve -- at the very least -- the line breaks?</p>
  
  <pre><code>function addLinktoCopy() {
  
  // Define tracking parameter
  var trackingparam = "source=copypaste";
  
  // Set document body as body_element variable
  var body_element = document.getElementsByTagName('body')[0];
  
  // Create a selection variable to store copied value
  var selection;
  
  // Populate selection variable with user's selected copy
  selection = window.getSelection();
  
  // Create a variable to store the selection length
  var selectionlength;
  
  // Convert the selection to a string and get the string's length
  selectionlength = selection.toString().length
  
  // If the selectionlength is &gt;34, then append tracking
  if ( selectionlength &gt; 34 ){
  
      // Set the current page's URL as a variable
      var page = document.location.href;
  
      // Create a seperator variable
      var seperator;
  
      // Create a locationURL variable to store the URL and associated tracking parameters
      var locationURL;
  
      // Check to see if the URL already contains the tracking paramater
      // If the URL doesn't contain the tracking code, append it to the end
      if ( page.indexOf(trackingparam) == -1 ) {
  
          // Check to see if the URL already includes a ? in it
          if ( page.indexOf("?") != -1 ) {
  
              // If ? is present in the URL string, set seperator variable to &amp;
              seperator = "&amp;";        
  
          }
  
          else {
  
              // If ? is not present in the URL string, set seperator variable to ?
              seperator = "?";
  
          }
  
          // Set locationURL variable with URL + tracking code
          locationURL = document.location.href + seperator + trackingparam;
  
      }
  
      // Othwerise, the tracking code already exists in the URL string, so append nothing
      else {
  
          // Set the locationURL variable with the URL as is      
          locationURL = document.location.href;
  
      }
  
      // Build link to page with editorial copy, URL, seperator, and URL tracking parameters
      var pagelink = "&lt;br/&gt;&lt;br/&gt;Read more at: "+ locationURL;
  
      // Create new variable with user's selection and page link
      var copytext = selection + pagelink;
  
      // Create a new div and add associated styling and hide it off the page
      var newdiv = document.createElement('div');
  
      // Append new div to document
      body_element.appendChild(newdiv);
  
      // Select text from the new (hidden) div
      newdiv.innerHTML = copytext;
  
      // Replace clipboard values with new selection + link value
      selection.selectAllChildren(newdiv);    
  
  }
  
  // Otherwise, selectionlength &lt;= 34, so do nothing
  // We are not appending any copy or URLs to the user's selection
  
  }
  </code></pre>