2010-11-26 11 views
6

Situación: - He creado una configuración de instalación (local) que devuelve una URL, por ejemplo: - ved.test.com que está mapeada a una dirección IP 11.22.33.44. Por lo tanto, para hacer que la aplicación web sea accesible después de la instalación, el usuario tiene que hacer una entrada en el archivo de hosts en el directorio "C: \ WINNT \ system32 \ drivers \ etc" explícitamente.En Firefox, ¿Escribir en un archivo usando Javascript?

Método: - Después de que se completa la aplicación de instalación, la aplicación escribe el archivo usando Javascript.

Problema: - Escribir un archivo usando Javascript es compatible con IE. Necesito una solución para Firefox. código utilizado: -

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Write To A File</title> 
<script language="javascript"> 
    function WriteToFile() 
    { 
    /* The below statement is supported in IE only */ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var s = fso.CreateTextFile("C:\\Test.txt", true); 
    s.WriteLine('IE Supports Me!'); 
    s.Close(); 
    } 
</script> 
</head> 
    <body onLoad="WriteToFile()"> 
</body> 
</html> 

también hemos referido en el enlace de SO: - How to read and write into file using JavaScript

sirviera suministrar una solución que soporta la escritura de un archivo usando Javascript que se ejecuta en Firefox navegador.

Gracias de antemano.

+1

Su SO-link responde la pregunta. Esto no es posible en el navegador. – jwueller

+2

¡Acaba de sobrescribir mi C: \ Test.txt! En serio, NO se permite que ninguna página web escriba en el sistema de archivos del usuario. Y jugar con "% SystemRoot% \ system32 \ drivers \ etc \ hosts" es claramente un comportamiento malicioso. –

+0

@ user205376 - Sí, soy consciente de la manipulación de archivos de host, estaba ayudando a los usuarios de mi aplicación para una mejor experiencia. Así encontré esta situación. – vedvrat13

Respuesta

14

No puede hacer esto, por razones de seguridad obviamente obvias. JavaScript no tiene acceso al sistema de archivos ... en IE no es JavaScript, pero ActiveX lo hace ... solo tiene expuesta una API de JavaScript.

El problema no es que Firefox no hace esto ... es que IE nunca le permitió :)

+3

Estoy sorprendido de que pueda odiar IE incluso _más_. – jwueller

+0

IE es mejor, porque los datos estadísticos dicen que la mayoría de los usuarios de 'mozilla.com' usan IE ... – khachik

+0

@Nick Gracias por su respuesta. Por favor sugiérame un enfoque diferente si no es factible en FF. – vedvrat13

3

Usted necesitará create your own Firefox extension, ya que la lectura/escritura de archivos locales se considera una operación privilegiada.

Lectura/escritura de archivos usando XPCOM: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O. Esto no funcionará desde su página web, sino solo desde un código privilegiado como extensiones.

+0

Gracias por su respuesta. Para ejecutar la extensión, ¿El usuario también necesita instalar estas extensiones? – vedvrat13

+0

@UIDreamer: Sí. El usuario debería hacer clic en una barra amarilla en la parte superior de la ventana, hacer clic en el botón Instalar en el cuadro de diálogo de advertencia y luego reiniciar Firefox. – PleaseStand

1

Mientras que Firefox no le dejará difícil que el código de una ruta específica, se puede conseguir que se presente un cuadro de diálogo para el usuario que puede guardarlo en el camino de forma manual, aunque también deberán cambiar el tipo de archivo (para que sepa que esto no es muy práctico): https://stackoverflow.com/a/13696029/271577. La misma publicación también muestra cómo puede abrir los contenidos del archivo en una nueva pestaña donde el usuario podría usar las funciones guardar del navegador para guardar el archivo manualmente (el beneficio de este enfoque es que la extensión del archivo puede ser .txt por defecto (y puede ser bueno en algunas circunstancias, ya que le da al usuario una vista previa de los contenidos)).

Por cierto, aunque la forma nativa de Firefox solía tener por permitir HTML para obtener privilegios con el permiso del usuario, enablePrivilege es ahora out the door, estoy trabajando en un add-on llamado AsYouWish que permite un acceso privilegiado (como la escritura de archivos de escritorio) que se solicitará al usuario por sitio, y aunque espero que eventualmente pueda convertirse en Firefox (requiriendo una lista blanca), actualmente requiere la instalación del complemento (y todavía está en alfa/beta, con una serie de cosas para finalizar o resolver, lo más importante es hacer cumplir el requisito de usar https para evitar los ataques de hombre en el medio).Actualmente utiliza una API que creo que podría funcionar con otros navegadores en el futuro, informa al usuario de exactamente qué privilegios se están solicitando y no requiere que los desarrolladores escriban un nuevo complemento cada vez que quieran tener su propio solicitud de sitio acceso privilegiado del usuario.

Cuestiones relacionadas