Como hacer una bifucación de un JavaScript a un TXT y que se autoguarde

Alexlealxd01

HISTORIADOR Y BIÓLOGO DEL FORO
Noderador
Nodero
Noder
30 Sep 2019
1.532
972
Querría hacer una bifurcación de este JavaScript a un Archivo de texto (TXT) pero que se guarde automáticamente
sin darle a nada

Tengo este código si me decís que puedo ponerle os lo agradecería

918

919
 

Valeo08

Capullo perro no mucho
Miembro del equipo
Burgués de Nodo
Moderador
Noderador
Nodero
Noder
24 Dic 2018
2.128
1.014
El problema te viene de que no haces que la página cancele la redirección al blob, por eso no se descarga.
De todas formas, te he modificado el código un poquito para que te funcione. Y perdón por tardar en responder.

El HTML que he usado es este:
HTML:
<!DOCTYPE html>
<html>
  <head>
    <title>Prueba</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
 
  <body>
    <table>
      <tr>
        <td>
          Escriba un nombre:
        </td>
      </tr>
      
      <tr>
        <td colspan=3>
           <input type="text" onclick="setTimer()" id="inputTextToSave" onKeyUp="caps()"/>
        </td>
      </tr>
    </table>

    <script type="text/javascript" src="code.js"></script>
  </body>
</html>

Y el JS este:
JavaScript:
var mayus = (function(e) {
    var tecla = e.value;
    tecla = tecla.toUpperCase();
          
    alert(tecla);
});

var caps = (function() {
    document.getElementById("inputTextToSave").value = document.getElementById("inputTextToSave").value.toUpperCase();
});


var setTimer = (function() {
  window.setTimeout(saveTextAsFile, 5000);
});

var saveTextAsFile = (function () {
    var textToWrite = document.getElementById("inputTextToSave").value;
    var downloadLink = document.createElement("a");
    document.body.appendChild(downloadLink);
    downloadLink.style.display = "none";
    downloadLink.innerHTML = "My Hidden Link";

    var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
    var fileNameToSaveAs = "htmlentxt.txt";
    var url = window.URL.createObjectURL(textFileAsBlob);

    downloadLink.href = url;
    downloadLink.download = fileNameToSaveAs;
    downloadLink.click();
    document.body.removeChild(downloadLink);
    window.URL.revokeObjectURL(url);
});


Por cierto, otra cosa que daría error sería hacer que la función se ejecute con el evento "onclick", ya que en cuanto se clickara en el
input, se ejecutaría la función indefinidamente. En su lugar, he puesto un timeOut que ejecuta la función tras pasar, este caso, 5000ms. Si
en cambio quieres que sea periódico, cambia el timeOut por un setInterval.
 
  • Love
  • Like
Reacciones : Thegjv y FlameZero

Alexlealxd01

HISTORIADOR Y BIÓLOGO DEL FORO
Noderador
Nodero
Noder
30 Sep 2019
1.532
972
Muchas gracias :D @Valeo08 me sirvió de mucho, una ultima pregunta ¿Se podría hacer que se guarde todo en un solo TXT?
 

Valeo08

Capullo perro no mucho
Miembro del equipo
Burgués de Nodo
Moderador
Noderador
Nodero
Noder
24 Dic 2018
2.128
1.014
Muchas gracias :D @Valeo08 me sirvió de mucho, una ultima pregunta ¿Se podría hacer que se guarde todo en un solo TXT?

Si quieres hacer eso, con una simple variable (o array si me apuras) puedes ir almacenando todo lo que escribes, es decir, los diferentes valores que puede ir tomando el input, así que luego solo tienes que pasarle esa variable a la función que crea el blob, en lugar del valor actual del propio input.
 

Alexlealxd01

HISTORIADOR Y BIÓLOGO DEL FORO
Noderador
Nodero
Noder
30 Sep 2019
1.532
972
@Valeo08 si me puedes decir que poner te lo agradecería, es que no encuentro referencia por ningún lado
 

Valeo08

Capullo perro no mucho
Miembro del equipo
Burgués de Nodo
Moderador
Noderador
Nodero
Noder
24 Dic 2018
2.128
1.014
@Valeo08 si me puedes decir que poner te lo agradecería, es que no encuentro referencia por ningún lado

Perdón por la tardanza pero he estado liado con la uni.

Sería muy simple.

JavaScript:
var TEXT = "";
var saveText = (function(){
    TEXT += document.getElementById("inputTextToSave").value;
});

Ahora el timer sería este:
JavaScript:
var TEXT = "";
var setTimer = (function() {
  window.setTimeout(saveText, 5000);
});

El código de la funcion saveTextToFile cambiaría en las primeras líneas; se pueden simplificar la modificación
simplemente asignando la variable local "textToWrite" igual a la global "TEXT" que aparece arriba.


Lo que no tengo claro es qué pretendes hacer, porque tendrías que descargar el archivo manualmente.
Qué intentas practicar un keylogger o algo por el estilo??
 
  • Love
Reacciones : Thegjv

Valeo08

Capullo perro no mucho
Miembro del equipo
Burgués de Nodo
Moderador
Noderador
Nodero
Noder
24 Dic 2018
2.128
1.014
Perdón por la tardanza pero he estado liado con la uni.

Sería muy simple.

JavaScript:
var TEXT = "";
var saveText = (function(){
    TEXT += document.getElementById("inputTextToSave").value;
});

Ahora el timer sería este:
JavaScript:
var TEXT = "";
var setTimer = (function() {
  window.setTimeout(saveText, 5000);
});

El código de la funcion saveTextToFile cambiaría en las primeras líneas; se pueden simplificar la modificación
simplemente asignando la variable local "textToWrite" igual a la global "TEXT" que aparece arriba.


Lo que no tengo claro es qué pretendes hacer, porque tendrías que descargar el archivo manualmente.
Qué intentas practicar un keylogger o algo por el estilo??

El TEXT del segundo código se me ha colado
 

Alexlealxd01

HISTORIADOR Y BIÓLOGO DEL FORO
Noderador
Nodero
Noder
30 Sep 2019
1.532
972
@Valeo08 El profesor que me pidio hacer este trabajao para conceseguir un 10 en progrmacion xd
 

Thegjv

Moder fav <3
Miembro del equipo
Moderador
Noderador
Nodero
Noder
30 Dic 2018
1.844
549
@Valeo08 te como los huevos como si fuesen uvas, que bonico toh
 
Arriba Pie