私は、ユーザーのクリップボードに帰属リンクを追加するスクリプトを書いています。Tynt の機能と同様です。
機能的には、以下のスクリプトは正常に機能していますが、改行と書式設定が削除されています。少なくとも改行を維持する方法はありますか?
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 >34, then append tracking
if ( selectionlength > 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 &
seperator = "&";
}
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 = "<br/><br/>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 <= 34, so do nothing
// We are not appending any copy or URLs to the user's selection
}