2010-11-26 6 views
6

Situation: - J'ai créé une configuration d'installation (locale) qui renvoie une URL, par exemple: - ved.test.com qui est mappé à une adresse IP 11.22.33.44. Ainsi, pour rendre l'application web accessible après l'installation, l'utilisateur doit explicitement entrer une entrée dans le fichier hosts sous le répertoire "C: \ WINNT \ system32 \ drivers \ etc".Dans Firefox, écrire dans un fichier en utilisant Javascript?

Approche: - Une fois l'application d'installation terminée, l'application écrit le fichier en utilisant Javascript.

Problème: - L'écriture d'un fichier en utilisant Javascript est prise en charge dans IE. J'ai besoin d'une solution pour Firefox. code utilisé: -

<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> 

ont également refered le lien SO: - How to read and write into file using JavaScript

Veuillez fournir une solution qui prend en charge l'écriture d'un fichier en utilisant Javascript qui fonctionne dans le navigateur Firefox .

Merci à l'avance.

+1

Votre lien SO répond à la question. Ce n'est pas possible dans le navigateur. – jwueller

+2

Vous venez d'écraser mon C: \ Test.txt! Sérieusement, AUCUNE page Web n'est autorisée à écrire sur le système de fichiers de l'utilisateur. Et déconner avec "% SystemRoot% \ system32 \ drivers \ etc \ hosts" est clairement un comportement malveillant. –

+0

@ user205376 - Oui, je suis conscient de la manipulation du fichier hosts, a été d'aider les utilisateurs de mon application pour une meilleure expérience. Ainsi est venu à travers cette situation. – vedvrat13

Répondre

14

Vous ne pouvez pas faire cela, pour des raisons de sécurité évidentes. JavaScript n'a pas accès au système de fichiers ... dans IE ce n'est pas JavaScript, mais ActiveX le fait ... il a juste une API JavaScript exposée.

Le problème n'est pas que Firefox ne fait pas ... il est que IE jamais permis :)

+3

Je suis surpris que je suis capable de détester IE même _more_. – jwueller

+0

IE est mieux, car les données statistiques disent que le plus grand nombre d'utilisateurs de 'mozilla.com' utilisent IE ... – khachik

+0

@Nick Merci pour votre réponse. S'il vous plaît me suggérer une approche différente si ce n'est pas faisable dans FF. – vedvrat13

3

Vous devrez create your own Firefox extension, parce que la lecture/écriture de fichiers locaux est considéré comme une opération privilégiée. Lecture/écriture de fichiers en utilisant XPCOM: https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

Cela ne fonctionnera pas à partir de votre page Web mais uniquement à partir de code privilégié tel que des extensions.

+0

Merci pour votre réponse.Pour exécuter l'extension, l'utilisateur doit également installer ces extensions? – vedvrat13

+0

@UIDreamer: Oui. L'utilisateur doit cliquer sur une barre jaune en haut de la fenêtre, cliquer sur le bouton Installer dans la boîte de dialogue d'avertissement, puis redémarrer Firefox. – PleaseStand

1

Alors que Firefox ne vous laissera pas coder en dur à un chemin spécifique, vous pouvez l'obtenir pour présenter une boîte de dialogue à l'utilisateur qui peut enregistrer sur le chemin manuellement, mais ils devront également changer le type de fichier (donc je sais que ce n'est pas très pratique): https://stackoverflow.com/a/13696029/271577. Le même post montre également comment vous pouvez ouvrir le contenu du fichier dans un nouvel onglet où l'utilisateur pourrait utiliser les fonctions de sauvegarde du navigateur pour enregistrer manuellement le fichier (l'avantage de cette approche est que l'extension de fichier peut être .txt par défaut (et peut être agréable dans certaines circonstances en ce qu'il donne à l'utilisateur un aperçu du contenu)).

Soit dit en passant, bien que la façon native Firefox l'habitude d'avoir pour permettre HTML d'obtenir des privilèges avec la permission de l'utilisateur, enablePrivilege est maintenant out the door, je travaille sur un add-on appelé AsYouWish qui permet un accès privilégié (par exemple l'écriture de fichiers de bureau) être demandé à l'utilisateur sur une base par site, et bien que j'espère qu'il finira par arriver dans Firefox (nécessitant une liste blanche), il nécessite actuellement l'installation de l'add-on (et il est toujours en alpha/bêta, avec un certain nombre de choses à finaliser ou à mettre au point, le plus important étant l'application de l'obligation d'utiliser https pour éviter les attaques de type man-in-the-middle).Il utilise actuellement une API qui pourrait potentiellement fonctionner avec d'autres navigateurs dans le futur, il informe l'utilisateur des privilèges demandés, et il ne nécessite pas que les développeurs écrivent un nouvel add-on chaque fois qu'ils veulent avoir leur site demande un accès privilégié de l'utilisateur.

Questions connexes