Sí, puedes hacerlo usando BLOB.
La secuencia de comandos adjuntará contenido a un enlace que al hacer clic ofrecerá descargar un archivo (un archivo que nunca existió).
Más información en:
Ésta es la forma en que lo hice (hay muchas otras maneras de hacerlo):
- GM (greasemonkey) s cript genera el contenido del archivo
- GM lo pasa a la página web usando sessionStorage.variable = "... content .."
- script en la página hace visible el enlace y adjunta el contenido de la variable al objeto BLOB .
Es necesario enhebrar/analizar el objeto.
- contactos = JSON.parse (sessionStorage.contacts)
- sessionStorage.contacts = JSON.stringify (contactos);
he modificado ligeramente el guión original para que sea genérico para varios tipos MIME.
Aquí está el mío.
// Stuff to create the BLOB object --- ANY TYPE ---
var textFile = null,
//-- Function
makeTextFile = function (text,textType) {
// textType can be 'text/html' 'text/vcard' 'text/txt' ...
var data = new Blob([text], {type: textType });
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
return textFile;
};
Espero que ayude.
Interesante idea. Definitivamente investigaré esto, pero puede requerir mucho más trabajo de lo que estoy dispuesto a hacer para esto y tal vez sería más rápido hacer un complemento de Firefox real para obtener acceso al sistema de archivos. –