variable - pegar portapapeles javascript




Edición de datos del portapapeles al copiar/pegar desde un sitio web (4)

He visto algunos sitios ahora en los que si resaltas el texto de un artículo, lo copias y luego lo pegas, pueden agregarle más texto.

Intenta copiar y pegar una sección del texto de un artículo en http://belfasttelegraph.co.uk/ y verás lo que quiero decir: agregan un enlace al artículo original en el texto pegado.

¿Cómo se hace esto? Supongo que hay algo de javascript en el trabajo aquí


Últimamente noté una afluencia de este "secuestro del portapapeles" en los sitios web. thefutoncritic.com, cracked.com ... Si usa Adblock solo ingrese en la lista de "entradas manuales" y agregue * post-copypaste.js * a esta. Esto debería evitar que los sitios agreguen sus anuncios a su portapapeles.


Este es un buen efecto, puede ver los scripts que se activan al copiar usando Firebug (en Firefox).

Inicie Firebug y cargue la página, elija borrar (porque la página usa mucho ajax hay 100 solicitudes muy rápidamente). A continuación, elija la pestaña 'Todos' e intente copiar. Verá una solicitud para una imagen de 1x1 píxeles pero si presiona el botón + para ver los detalles, verá en la pestaña 'params' que esta solicitud GET pasa el texto solicitado como el parámetro 'contenido', con algunos La información xpath que se usará para manipular el portapapeles DOM:

start_node_xpath    /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[39]/text()

end_node_xpath  /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[41]/text()

Como @Crimson señaló que hay métodos para manipular el portapapeles, como zeroclipboard que usan Flash y una imagen.

Creo que así es como se hace la técnica usando la solicitud de obtención de imagen para cambiar el portapapeles.



Un sitio de noticias que visito usa esta función para anexar una "fuente" a la selección copiada:

function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    // change this if you want
    var pagelink = "<br><br>Fuente: Emol.com - <a href='"+document.location.href+"'>"+document.location.href+"</a><br>";
    var copytext = selection + pagelink;
    var newdiv = document.createElement('div');
    newdiv.style.position='absolute';
    newdiv.style.left='-99999px';
    body_element.appendChild(newdiv);
    newdiv.innerHTML = copytext;
    selection.selectAllChildren(newdiv);
    window.setTimeout(function() {
        body_element.removeChild(newdiv);
    },0);
}
document.oncopy = addLink;




copy-paste