2011-03-25 10 views
6
chrome.tabs.onUpdated.addListener(checkForValidUrl); 
function checkForValidUrl(tabId, changeInfo, tab) { 
    if (tab.url.indexOf('https') > -1) { 
     var tabURL = tab.url; 
     console.log("\n<TimeStamp>" + getTimestamp() + "</TimeStamp><Browser>Chrome</Browser><URL>" + tabURL + "</URL>\n"); 
     window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024, initFs); 

     function initFs(fs) { 
      fs.root.getFile 
      ('log.txt', { create: true, exclusive: true }, function (fileEntry) { 
       fileEntry.isFile = true; 
       fileEntry.name = 'log.txt'; 
       fileEntry.fullPath = '/log.txt'; 
       fileEntry.createWriter(function (fileWriter) { 
        fileWriter.seek(fileWriter.length); 
        var bb = new BlobBuilder(); 
        bb.append("\n<TimeStamp>" + getTimestamp() + "</TimeStamp><Browser>Chrome</Browser><URL>" + tabURL + "</URL>\n"); 
        fileWriter.write(bb.getBlob('text/plain')); 
       }); 
      }); 
     } 
    } 
} 
+1

¿Estás escribiendo una extensión de Chrome? Si es así, por favor especifique eso (en una etiqueta y/o en la pregunta). – Martijn

+0

Intente agregar una devolución de llamada de error a la llamada requestFileSystem para mostrar cualquier error. – HBP

+0

He editado los cambios a mi pregunta, el problema anterior se ha resuelto y me he enfrentado a un nuevo problema. Guíame, gracias de antemano. – Derek

Respuesta

10

Basado en esto:

En el momento de escribir este artículo, Google Chrome 9+ tiene la aplicación única de trabajo de la API de sistema de archivos. Dado que aún no existe una interfaz de usuario dedicada del navegador para la administración de archivos/cuotas, la API no se puede usar sin ejecutar Chrome con - quota ilimitada para archivos (Nota: si está creando una aplicación o la extensión para Chrome Web Store, el permiso del archivo de manifiesto unlimitedStorage es suficiente).

encontrado en http://www.html5rocks.com/tutorials/file/filesystem/#toc-support

que suponga que está utilizando Chrome y que no se ha establecido la bandera --unlimited-cuota-para-archivos

+0

Si tuviera que agregar el permiso "unlimitedStorage" en el archivo de manifiesto, me preguntaría "El manifiesto no es JSON válido, error de sintexto. ¿Cuál es el problema? – Derek

+0

El archivo de manifiesto debe ser una sintaxis de JSON válida. Consulte aquí: http://code.google.com/chrome/extensions/manifest.html#permissions – HBP

+0

He editado los cambios a mi pregunta, se resolvió el problema anterior y me he enfrentado a un problema nuevo. Guíese, gracias de antemano. – Derek

1

¿Qué tal solo usando localStorage?

+0

He visto el tutorial en HTML5 fileSystem API al escribir el archivo en el sistema local, creí haber seguido cada paso pero no he podido ver mi archivo de registro dentro de mi sistema local. Algún consejo ? – Derek

+0

He editado los cambios a mi pregunta, el problema anterior se ha resuelto y me he enfrentado a un nuevo problema. Guíame, gracias de antemano. – Derek

+0

localStorage es probablemente la opción más fácil. La única desventaja es que está limitado a 5 MB, incluso después de especificar el permiso '" unlimitedStorage ". Úselo así: 'localStorage [" log "] =" ¡Hola mundo! "' Para escribir, y 'log = localStorage [" log "]' para leer. –

7

Esta API del sistema de archivos no aparece para escribir en realidad una verdadero "archivo" a su disco duro. Parece almacenar un archivo dentro de una zona segura de espacio aislado en el navegador. Tendrá que escribir un pequeño administrador de archivos rápido y sucio (o encontrar uno por ahí) para administrar los archivos de una aplicación web determinada. También puedes intentar visitar filesystem://<your URL here>/temporary/ para ver todos los archivos que tu aplicación ha creado.

+0

Un cambio: sistema de archivos: http // /temporal/ –

+0

¿se puede acceder al archivo desde fuera del navegador? Digamos que escribo un archivo de texto, ¿puedo abrirlo de alguna manera en un editor de texto externo? – ycomp

Cuestiones relacionadas