2012-03-08 11 views
7

Imagine un cliente FTP escrito en HTML y JavaScript. Esta parte funciona Pero sería bueno si el usuario puede "copiar la lista" en el portapapeles. Resulta que las cosas del portapapeles no son tan fáciles en JS (además, las listas pueden ser enormes). Así que es mejor abrir una ventana con la lista generada, y luego el usuario puede elegir CopiarPast o Guardar la página en el disco.Chrome: JavaScript window.open to be Save-able

Actualmente hago:

 
    my_window = window.open("", "Copy List"); 
    my_window.document.write('<pre>\n'+string+'</pre>'); 
    my_window.document.close(); 

que trabaja. Obtengo una nueva pestaña y la lista que he generado en "cadena" muestra muy bien.

Pero Chrome desactiva/desactiva la opción "Guardar página". Sería bueno si el usuario puede guardar la página (html o txt). ¿Qué magia se necesita para abrir una ventana/pestaña y dejar que guarden el contenido?

Dado que usamos WebSockets (key1/key2) esto solo funciona en Chrome, no se necesitan otros navegadores.

+0

Casi todos los navegadores web admite sockets; va a necesitar una excusa mejor que esa para eliminar el soporte de navegadores cruzados. http://caniuse.com/#feat=websockets – Domenic

+0

Se trata más de la versión de protocolo. Desde que implementé el puerto WebSocket en el motor FXP.One para que se comunique el código JS, solo implementé el nuevo protocolo, que usa Sec-WebSocket-Key y Sec-WebSocket-Accept. Actualmente (al menos, cuando comenzamos el código en diciembre) eso solo significaba Chrome. Todos los demás navegadores usaron key1/key2, o, se deshabilitaron. Pude haber implementado el protocolo anterior también, pero como estaba siendo eliminado, sentí que esperar era más fácil. – lundman

+0

Volví a probar Firefox, sigue siendo el protocolo anterior. Pero Firefox-Beta5 los ha actualizado, y de hecho funciona muy bien con FXP.One. Entonces, supongo que si ejecutas la versión beta, una solución para dos navegadores estaría bien. – lundman

Respuesta

3

Camino después de los hechos, pero se puede utilizar un URI de datos para esto:

window.open("data:text/plain;base64,"+btoa(theCode))

Cuestiones relacionadas