Monday, July 7, 2014

A?adir informaci?n cuando alguien hace copy & paste


Esta no es una forma de evitar que alguien nos copie contenido del blog, si no de agregar la URL de nuestro blog cuando alguien nos copie el texto de alguna entrada. Por ejemplo, si copias el texto del siguiente p?rrafo y lo pegas en el recuadro de abajo, aparecer? la URL de esta entrada as? como el nombre de este blog.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut augue nibh. Aliquam erat volutpat. Nullam sodales nunc eu euismod convallis. Vivamus ornare placerat ipsum, luctus scelerisque libero vehicula nec. Fusce varius quis leo at facilisis. Quisque nec dolor dui. In sed odio non augue lacinia congue. Curabitur et turpis ante. Integer eu turpis a odio accumsan dignissim. Sed id ornare metus. Sed consequat felis non mi molestie, sit amet.


En este caso ver?s que el enlace es s?lo un texto, pero si quien lo copia lo pegara estando en la pesta?a "Redactar" entonces se copiar? como un enlace HTML.

Ciertamente quien copie podr? borrar esa informaci?n extra que hemos a?adido, pero tambi�n existe la posibilidad de que la deje, o incluso que agregue una referencia m?s formal sobre el blog donde lo ha tomado y eso se transforma en m?s tr?fico para el blog.

Tynt ofrece ese servicio desde hace mucho, y adicionalmente ofrece otras caracter?sticas como datos estad?sticos. Es una buena alternativa, pero yo soy de los que no le gusta mucho depender de servicios externos, sobre todo si podemos ahorrarnos muchas l?neas de c?digo.

Este m�todo usa jQuery para que pueda ser servible en todos los navegadores, y el c?digo es mucho m?s corto que el que los servicios externos ofrecen.

Para ponerlo en tu blog s?lo entra en Plantilla | Edici?n de HTML y antes de </body> agrega lo siguiente:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script>
//<![CDATA[
// Añadir información extra al hacer copy & paste
$("body").bind('copy', function (e) {
if (typeof window.getSelection == "undefined") return;
var miblog = document.getElementsByTagName('body')[0];
var seleccionar = window.getSelection();
if (("" + seleccionar).length < 10) return;
var nuevodiv = document.createElement('div');
nuevodiv.style.position = 'absolute';
nuevodiv.style.left = '-99999px';
miblog.appendChild(nuevodiv);
nuevodiv.appendChild(seleccionar.getRangeAt(0).cloneContents());
if (seleccionar.getRangeAt(0).commonAncestorContainer.nodeName == "PRE") {
nuevodiv.innerHTML = "<pre>" + nuevodiv.innerHTML + "</pre>";
}
nuevodiv.innerHTML += "<br/><br/>Artículo original: <a href='"
+ document.location.href + "'>"
+ document.location.href + "</a><br/>&copy; Nombre de mi blog";
seleccionar.selectAllChildren(nuevodiv);
window.setTimeout(function () { miblog.removeChild(nuevodiv); }, 200);
});
//]]>
</script>
Si ya tuvieras jQuery en tu plantilla entonces omite la primera l?nea. Ah? ver?s d?nde cambiar el nombre de tu blog, y si lo deseas tambi�n puedes cambiar el texto que dice "Art?culo original:", puedes ponerle "M?s informaci?n en:" o lo que gustes.

El script tiene una condici?n, para cuando el texto que se copie sea muy corto entonces no se ejecute, por ejemplo, habr? quien s?lo quiera copiar una palabra o dos, ah? no vale la pena mostrar la informaci?n de referencia ya que no est? copiando como tal el contenido de tu entrada. Esta condici?n est? determinada por el n?mero de caracteres que se copien, que por defecto la hemos puesto en 10 ese valor lo puedes modificar por uno m?s alto o uno m?s corto.

V?a | JitBit

No comments:

Post a Comment