Можно ли загрузить файл с помощью JS/HTML5 FileReader на странице без обслуживания?

Я хочу создать простую игру в HTML5/JS, и я не хочу, чтобы пользователь запускал любой веб-сервер или подключался к веб-сайту. (только HTML-страница)

Но похоже, что FileReader можно использовать только для ввода типов файлов.

Возможно ли иметь только два файла: index.html и foo.txt бок о бок и читать foo.txt из index.html с чем-то вроде:

// 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" ) );

Любая идея?

Ответ 1

Я считаю, что это ваш ответ: Как открыть файл локального диска с помощью Javascript?

Короче говоря, вы смотрите что-то вроде этого:

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

HTML5 позволяет загружать файлы, которые хранятся локально на компьютере, но вы не можете выбрать его. Пользователь должен выбрать файл, который он/она хочет загрузить.

Представьте себе, что произойдет, когда разработчики (или лучше говорящие, хакеры) получат доступ к локальным данным everyones...

Ответ 2

Это старый вопрос, и я уверен, что многие люди столкнулись с теми же проблемами, но, как только JS станет самостоятельным приложением (и это раздражает, что нужно взломать один путь, но я думаю все чаще JS-приложения будут клиент-сервером в любом случае), тогда все равно будет необходимо собрать некоторые поддерживающие инструменты.

Один из способов создания данных в обслуживаемом виде, а затем передать его JavaScript, который я использую, - это написать простой script, который принимает набор файлов содержимого и анализирует содержимое в JSON в большой старой data.js файл. Затем это можно включить и вести себя точно так же, как обычные объекты Javascript. Можно также использовать JSON для хранения данных, в первую очередь, но это намного более многословно, чем что-то вроде простого CSV, если у вас много данных для вашего приложения.

Ответ 3

У меня есть чит-код для этого случая.

Я назвал свой файл JSON как .js: jsonfile.js, который содержит мои данные json в виде строковой переменной:

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

В моем index.html, я включаю его, перед моим .js с кодом:

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

Затем я могу получить свои данные как объект JSON в mycode.js следующим образом:

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