Foros del Web » Programando para Internet » Javascript »

Copiar con rastro

Estas en el tema de Copiar con rastro en el foro de Javascript en Foros del Web. Buenas a todos, estoy iniciándome en este mundillo y la verdad es que voy pez. Lo que quiero hacer creo que es sencillo y he ...
  #1 (permalink)  
Antiguo 30/05/2012, 18:54
Avatar de JoanP  
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Busqueda Copiar con rastro

Buenas a todos, estoy iniciándome en este mundillo y la verdad es que voy pez. Lo que quiero hacer creo que es sencillo y he buscado en el foro pero al no conocer los términos adecuados es difícil solucionarlo.

Me gustaría que al copiar texto de mi página, apareciera información adicional. Es decir, como he visto en muchas webs: (este es un ejemplo inventado)

"Texto que le copio a un amigo porque me parece interesante"

No olvides visitarnos en www .direccióninventada .com


Un saludo a todos!
  #2 (permalink)  
Antiguo 30/05/2012, 22:55
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 14 años, 3 meses
Puntos: 1567
Respuesta: Copiar con rastro

En primer lugar, bienvenido a FDW @JoanP
A decir verdad, no vi mucho ese comportamiento en ninguna web, de todas maneras lo podés hacer asi
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. </head>
  7. <input name="uno"
  8. onselect="document.getElementById(this.name).style.display= 'block';"
  9. onblur="document.getElementById(this.name).style.display= 'none';"
  10. style="border: 0; outline: none;width: 400px;" value="Texto que le copio a un amigo porque me parece interesante" />
  11. <div id="uno" style="display: none">No olvides visitarnos en www .direccióninventada .com</div>
  12. </body>
  13. </html>
Requiere Javascript y que el elemento con el texto a seleccionar sea un input, o un textarea, ya que no son muchos los elementos que ceptan el evento "onselect", como ves lo estilizamos para eliminarle los bordes y disimular el campo de texto
El name del input y el id del div con el mensaje, deben tener el mismo valor.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 31/05/2012, 04:37
Avatar de JoanP  
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Copiar con rastro

Creo que me expliqué fatal, lo siento.
Me refería a que al copiar texto de una página en una conversación de msn, chat, Facebook, etc. para que lo vea otra persona aparezca un rastro con información de la web. La clave aquí es que el usuario en ningún momento ve que se esté copiando más que lo que ha seleccionado, sólo aparece al darle a pegar.

Muchísimas gracias por tu ayuda emprear!
  #4 (permalink)  
Antiguo 31/05/2012, 06:34
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 14 años, 4 meses
Puntos: 539
Respuesta: Copiar con rastro

En primer lugar dejar constancia que este es un recorte que no recuerdo su origen o autoría. Así que mis disculpas por no otorgar el debido crédito.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function addLink() {
  3.     var body_element = document.getElementsByTagName('body')[0];
  4.     var selection;
  5.     selection = window.getSelection();
  6.     var pagelink = "<br />Información original de: <a href='"+document.location.href+"'>"+document.location.href+"<br />Añade algo más que la dir del sitio<br />";
  7.     var copytext = pagelink + selection + pagelink;
  8.     var newdiv = document.createElement('div');
  9.     newdiv.style.position='absolute';
  10.     newdiv.style.left='-99999px';
  11.     body_element.appendChild(newdiv);
  12.     newdiv.innerHTML = copytext;
  13.     selection.selectAllChildren(newdiv);
  14.     window.setTimeout(function() {
  15.     body_element.removeChild(newdiv);
  16.     },0);
  17. }
  18. document.oncopy = addLink;
  19. </script>

Pero como verá, se necesita algo más que html.
Pida le trasladen la consulta al foro apropiado.
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
  #5 (permalink)  
Antiguo 31/05/2012, 09:11
Avatar de JoanP  
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Copiar con rastro

Muchas gracias!!

Es justo lo que buscaba y funciona perfectamente. Siento haberlo puesto en html, pero no sabía muy bien con que se podría hacer. Espero que los moderadores lo muevan al lugar que le corresponda.

Gracias de nuevo a los dos!
  #6 (permalink)  
Antiguo 01/06/2012, 16:13
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 13 años, 4 meses
Puntos: 1011
Respuesta: Copiar con rastro

ese código funciona en ff, chrome y safari, pero no en ie8 ni opera

de opera hay que olvidarse, ya que no acepta el evento oncopy

ie8 no admite (getSelection y selectAllChildren)

vamos a añadirle algunas cosillas
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
function Evento(elemento,nomevento,funcion) {
if (elemento.attachEvent)
{
var fnc=function(){
funcion.call(elemento,window.event);
}
elemento.attachEvent('on'+nomevento,fnc);
return true;
}
else
if (elemento.addEventListener)
{
elemento.addEventListener(nomevento,funcion,false) ;
return true;
}
else
return false;
}



function init() {
Evento(document.getElementById('control'), 'copy', function(event) {addLink(event);});
Evento(document.getElementById('bloque'), 'copy', function(event) {addLink(event);});
}


function addLink(ev) {
var body_element = document.getElementsByTagName('body')[0];
var selection;
if(window.getSelection) {
selection = window.getSelection();
var pagelink = "Información original de: &lt;a href='"+document.location.href+"'&gt;"+document.lo cation.href+"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;";
} else {
selection = document.selection.createRange().text;
var pagelink = "Información original de: <a href='"+document.location.href+"'>"+document.locat ion.href+"</a><br /><br />";
}
var newdiv = document.createElement('div');
newdiv.id = 'temp';
newdiv.style.position='absolute';
newdiv.style.left='99px';
newdiv.innerHTML = pagelink + selection;
body_element.appendChild(newdiv);
if(window.getSelection) {
selection.selectAllChildren(newdiv);
} else {
document.getElementById('temp').focus();
window.clipboardData.setData('Text', document.getElementById('temp').innerHTML);
}
window.setTimeout(function() {
body_element.removeChild(newdiv);
},0);

if (document.all) ev.returnValue = false;
}
//document.oncopy = function() {addLink();};

window.onload = init;
</script>
</head>
<body>

<input type="text" value="un texto a copiar" id="control" />
<div id="bloque">
Suspendisse potenti. Praesent ut risus ligula, quis ultrices libero. Sed faucibus leo vitae tortor tincidunt eget pulvinar nulla suscipit. Vestibulum eget libero metus, sit amet iaculis ante. Curabitur sed ligula dolor. Aliquam erat volutpat. Cras sit amet ligula dolor, a eleifend sapien. Nam lobortis turpis nec nisl tempor sit amet malesuada diam luctus.
</div>

</body>
</html>
lo he probado y funciona en (ff, chrome, safari, ie8 y, aunque no lo he probado, ha de funcionar en ie9)
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 05/07/2012, 17:08
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Copiar con rastro

He encontrado algo mejor:
http://www.tynt.com/
Es la solución!
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]

Etiquetas: copia, dejar, rastro, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.