entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Crear un ctrol+a - ctrol+c en mi website usando javascript?

Hola, mi consulta es la siguiente: Necesito crear un botón en mi sitio web que cuando se haga clic en él, se copie toda la parte visible del sitio, es decir.. al hacer clic, sea de igual manera que: seleccionar todo el sitio (ctrol+a) y luego copiarlo (ctrol+c).

Ya que luego con esto, analizo todo lo copiado y genero un resumen del mism a través de PHP.

¿Es posible esto?, muchas gracias!

0voto

Leonardo-Tadei comentado

Hola!

lo que querés copiar es toda la página o solo, por ejemplo, el contenido de un textarea?

A dónde pegarías lo copiado para analizarlo con PHP y generar el resumen?

0voto

gislacasares comentado

Hola, lo que quiero copiar es toda la pagina, ya encontré el codigo para hacer eso que es el siguiente:

<!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=iso-8859-1">
<title>test</title>
<script>
function seleccionar(obj){
    if(obj.nodeName.toLowerCase()=='textarea' || (obj.nodeName.toLowerCase()=='input' && obj.type=='text')){
        obj.select();
        return;
    }
    if (window.getSelection) { 
        var sel = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(obj);
        sel.removeAllRanges();
        sel.addRange(range);
    } 
    else if (document.selection) { 
        document.selection.empty();
        var range = document.body.createTextRange();
        range.moveToElementText(obj);
        range.select();
    }
}
</script>
</head>

<body>
<h3>SELECCIONA TODO EL CONTENIDO</h3>
<a href="#" onclick="seleccionar(document.body)">seleccionar</a>
</body>
</html>

Al hacer clic en seleccionar, selecciona todo pero no lo copia, me interesa copiar esto en una variable de php para luego procesarlo.

Editado: movido a comentario (no es una respuesta)

2 Respuestas

1voto

hartlink Puntos830

Hola, qué tal respondiendo tú duda:

Para seleccionar todo es bastante sencillo con implementar el siguiente código:

<!DOCTYPE html>
<html>
<body>

Texto: <textarea rows="4" cols="50" id="myText">
</textarea>
<button type="button" onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    document.getElementById("myText").select();
}
</script>

</body>
</html>

Para lo que comentas de copiar al porta papeles requiere un poco más de ciencia y de JQuery, por lo cual te recomiendo la librería de ZeroClipboard, te dejo dos ligas con documentación y demos funcionales con los cuales podrás probar esta alternativa. Link1 Link2 Saludos.

2votos

Leonardo-Tadei Puntos227320

Hola gislacasares,

vamos por partes: podés seleccionar todo el documento como haciendo Ctrl + A simplemente con:

content.getSelection().selectAllChildren(content.document.body);
todo = window.getSelection();

Luego, no le encuentro sentido la parte de llevarlo al portapapeles, ya que si el proceso del texto será un PHP, deberás enviarlo al servidor en dónde funciona el sitio web para el análisis, con lo que tenerlo en portapapeles de la computadora del cliente no te sirve de nada.

Lo que deberías hacer es enviar al servidor todo el texto seleccionado, por ejemplo cargando la selección a un campo oculto para enviarlo al servidor desde un formularios (ya sea con un submit o vía AJAX)

Juntándolo todo, podría ser:

<form action="tuScript.php" method="post" if="miForm">
   <input type="hidden" id="data" name="data" value="">
</form>
<script type="text/javascript" >
function seleccionar(){
    content.getSelection().selectAllChildren(content.document.body);
    document.getElementById('data').value=window.getSelection();
    document.getElementById('miForm').submit();
}
</script>
<a href="#" onclick="seleccionar()">seleccionar y enviar</a>

Esto te enviará al servidor todo lo seleccionado y lo recibirás vía $_POST["data"]

Saludos!

PD: como siempre, es posible haya que hacer algo un poco diferente para versiones viejas de IE.

0voto

gislacasares comentado

Muchas gracias Leonardo, en realidad, entendiste bien mi solicitud, es eso lo que estaba buscando, pasar todo el contenido de un sitio a través de una variable. Pruebo y cualquier cosa les escribo. Muchísimas gracias!!!!!

0voto

Leonardo-Tadei comentado

Por nada!

Si la respuesta te sirvió, recordá clickear en "seleccionar respuesta" así queda marcada como solucionada para futuros visitantes del sitio.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta