2009-07-06 3 views

Répondre

45

Tiddlywiki propose plusieurs méthodes de sauvegarde des données, selon le navigateur utilisé. As you could see in the source.

  • Si ActiveX est activé, il utilise Scripting.FileSystemObject.
  • Sur les navigateurs basés sur Gecko, il essaie d'utiliser UniversalXPConnect.
  • Si Java est activé, il utilise l'applet Java TiddlySaver.
  • Si Java LiveConnect est activé, il essaie d'utiliser les classes de fichiers Java.
+0

Il serait bon que la réponse inclue un pointeur vers le code actuel dans la base de code github. – GabrielC

12

Il utilise une des références de fichier java comme ceci:

drivers.tiddlySaver = { 
     name: "tiddlySaver", 
     deferredInit: function() { 
      if(!document.applets["TiddlySaver"] && !$.browser.mozilla && !$.browser.msie && document.location.toString().substr(0,5) == "file:") { 
       $(document.body).append("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1'height='1'></applet>"); 
      } 
     }, 
     isAvailable: function() { 
      return !!document.applets["TiddlySaver"]; 
     }, 
     loadFile: function(filePath) { 
      var r; 
      try { 
       if(document.applets["TiddlySaver"]) { 
        r = document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8"); 
        return (r === undefined || r === null) ? null : String(r); 
       } 
      } catch(ex) { 
      } 
      return null; 
     }, 
     saveFile: function(filePath,content) { 
      try { 
       if(document.applets["TiddlySaver"]) 
        return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content); 
      } catch(ex) { 
      } 
      return null; 
     } 
    } 
2

La réponse est en effet NO. applets Java et les plug-ins ActiveX redoutés sont généralement utilisés si cela est nécessaire

4

Techniquement, vous pouvez le faire

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite'); 

dans un navigateur netscape compatible (Firefox, Mozilla, Netscape), et il demandera à l'utilisateur * autoriser ou non l'accès au système de fichiers, mais ce n'est pas portable.

* une fois par processus de navigateur

35

Fichier HTML5 [1], FileWriter [2], et FileSystem [3] API sont disponibles dans le dernier canal de développeur de Google Chrome. L'API FileSystem vous permet de lire/écrire dans un système de fichiers sandbox dans un espace connu du navigateur. Vous ne pouvez pas, par exemple, ouvrir le dossier «Mes images» sur le FS local de l'utilisateur et lire/écrire sur celui-ci. C'est quelque chose dans les travaux, mais il ne sera pas prêt pour un moment. Exemple d'écriture d'un fichier:

window.requestFileSystem(
    TEMPORARY,  // persistent vs. temporary storage 
    1024 * 1024,  // 1MB. Size (bytes) of needed space 
    initFs,   // success callback 
    opt_errorHandler // opt. error callback, denial of access 
); 

function initFs(fs) { 
    fs.root.getFile('logFile.txt', {create: true}, function(fileEntry) { 

    fileEntry.createWriter(function(writer) { // FileWriter 

     writer.onwrite = function(e) { 
     console.log('Write completed.'); 
     }; 

     writer.onerror = function(e) { 
     console.log('Write failed: ' + e.toString()); 
     }; 

     var bb = new BlobBuilder(); 
     bb.append('Lorem ipsum'); 
     writer.write(bb.getBlob('text/plain')); 

    }, errorHandler); 
    } 
} 

Vérifiez cette HTML5 Storage slide deck pour plus d'extraits de code.

3

Est-ce que javascript peut accéder à un système de fichiers?

En dehors de la zone de bac à sable mentionnée ci-dessus, au meilleur de ma connaissance. Cependant, il peut accéder à une applet java signée qui a des méthodes publiques appelables pouvant accéder à tous les fichiers. Je l'ai fait et cela fonctionne bien et est cross browser. La partie de signature est un peu impliquée et pour un usage professionnel, vous devrez peut-être payer pour un certificat de signature de code qui autorise votre identité. Obtenez-le d'un endroit comme Verisign. De cette façon, les utilisateurs savent au moins à qui l'applet est écrite (si cela peut aider). Vous pouvez le signer vous-même gratuitement, mais l'un de ces popups "risque de sécurité possible" se produira à la première utilisation pour l'autorisation de l'utilisateur.

Vous penseriez que de telles applets signées pour l'écriture de fichier existeraient déjà pour le téléchargement mais je n'ai pu trouver aucune via la recherche. Si c'est le cas, vous pouvez simplement le brancher sur votre page, apprendre l'API et c'est parti.

Questions connexes