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
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
Noderador
Nodero
Noder
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.
 
  • Maravilloso
  • Like
Reacciones : Thegjv y FlameZero

Alexlealxd01

HISTORIADOR Y BIÓLOGO DEL FORO
Noderador
Nodero
Noder
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
Noderador
Nodero
Noder
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.
 

Valeo08

Capullo perro no mucho
Noderador
Nodero
Noder
@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??
 
  • Maravilloso
Reacciones : Thegjv

Valeo08

Capullo perro no mucho
Noderador
Nodero
Noder
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