2012-02-27 12 views
10

Quiero crear un juego simple en HTML5/JS y no quiero que el usuario ejecute ningún servidor web o que tenga que conectarse a un sitio web. (solo una página HTML)¿Es posible cargar un archivo con JS/HTML5 FileReader en una página no servida?

Pero parece que FileReader solo se puede usar en archivos de tipo entradas.

¿Es posible tener sólo dos archivos: index.html y lado a lado y foo.txt leer foo.txt de index.html con algo como:

// No input needed, I know waht I want to read 
var my_file = new File("foo.txt"); 
var reader = new FileReader(); 
alert(reader.readAstext(my_file, "UTF-8")); 

Alguna idea?

+0

'' FileReader' y no son File' Complementos de JavaScript Hay clases de Java del mismo nombre. ¿Estás interactuando con un applet u otra cosa que proporciona un puente a una JVM? –

+0

No entiendo cómo se relacionan los archivos con su juego HTML5/JS. ¿Qué es lo que espera lograr leyendo un archivo y en qué máquina se encuentra este archivo? –

+7

@MikeSamuel 'FileReader' y' File' son parte de javascript desde HTML5: https://developer.mozilla.org/en/DOM/FileReader –

Respuesta

8

Creo que esta es la respuesta: How to open a local disk file with Javascript?

En resumen, que busca algo como esto:

<input type="file" id="files" name="file" /> 

HTML5 permite cargar archivos que se almacenan localmente en el equipo, pero no se puede seleccionarlo El usuario debe seleccionar el archivo que desea cargar.

Imagínese lo que pasaría cuando los desarrolladores (o mejor hablada, los piratas informáticos) tendría acceso es para todos los datos locales ...

+0

Esto es de lo que tenía miedo ... así que me imagino que no es posible hacer un juego complejo (con muchos recursos dinámicos) de esta manera ... Tendré que alojar el juego en un servidor web y crear solicitudes a los contenidos. –

+0

Sí, el servidor es necesario para tal cosa. Otra opción podría ser crear un sitio web en el servidor local y luego convertirlo a un archivo .exe utilizando algunos de los programas listados (no estoy seguro si es compatible con HTML5 aún): https://www.google.com/search?client=opera&rls = en & q = make + sitio web + stanalone + ejecutable & sourceid = opera & ie = utf-8 & oe = utf-8 & channel = sugerir – DRAX

1

Ésta es una cuestión de edad y estoy seguro de que mucha gente se han topado con la los mismos problemas, pero una vez que JS se convierte en una aplicación independiente (y esto es algo molesto tener que abrirse paso, pero creo que cada vez más las aplicaciones JS serán cliente-servidor) comienza a ser necesario reunir herramientas de todos modos.

Una forma de crear datos de forma mantenible y luego pasarlos a JavaScript que estoy usando es escribir un script simple que toma un conjunto de archivos de contenido y analiza el contenido en JSON en un gran archivo data.js antiguo . Esto puede ser incluido y comportarse exactamente igual que los objetos regulares de Javascript. También se podría usar JSON para almacenar los datos en primer lugar, por supuesto, pero eso es mucho más detallado que algo como CSV simple si tienes muchos datos para tu aplicación.

0

Tengo un código de trucos para este caso.

que el nombre de mi archivo JSON como Js: jsonfile.js, que contiene mis datos JSON como una variable de cadena:

var jsondata = '{ "foo" : "bar" }'; 

En mi index.html, lo incluyo, ante mis Js con el código:

<html> 
<head> 
<script type="text/javascript" src="mydata/jsonfile.js"></script> 
<script type="text/javascript" src="js/mycode.js"></script> 

Entonces puedo conseguir mis datos mientras que el objeto JSON en mycode.js así:

var data = JSON.parse(jsondata); 
alert(data.foo); 
Cuestiones relacionadas