javascript - variable - Edición de datos del portapapeles al copiar/pegar desde un sitio web
copiar variable al portapapeles javascript (5)
Ú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.
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í
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.
Notará que esto sucede solo cuando usa la combinación de teclas [Ctrl + C] y no si resalta el texto y elige copiar desde el menú contextual.
Simplemente están atrapando la tecla [Ctrl + C].
Además, para agregar datos al portapapeles, eche un vistazo a esta publicación: ¿Cómo copio en el portapapeles en JavaScript?
Otra solución utilizada por otros sitios web es utilizar jQuery y el evento ''copiar'' / ''cortar'':
$(''body'').bind(''copy cut'',function(e){manipulate();});
Algunos ejemplos aquí: http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/
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;