2012-02-27 20 views
10

Tôi muốn tạo một trò chơi đơn giản trong HTML5/JS và tôi không muốn người dùng chạy bất kỳ máy chủ web nào hoặc phải kết nối với trang web. (chỉ một trang HTML)Có thể tải tệp bằng Trình đọc tệp JS/HTML5 trên trang không được phân phối không?

Nhưng có vẻ như FileReader chỉ có thể được sử dụng trên các loại tệp nhập.

Có thể chỉ có hai tập tin: index.html và foo.txt cạnh nhau và để đọc foo.txt từ index.html với một cái gì đó như:

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

Bất kỳ ý tưởng?

+0

'FileReader' và' File' không JavaScript được tích hợp sẵn. Có các lớp Java cùng tên. Bạn đang tương tác với một applet hay cái gì khác cung cấp một cây cầu cho một JVM? –

+0

Tôi không hiểu cách các tệp liên quan đến trò chơi HTML5/JS của bạn. Bạn hy vọng đạt được điều gì bằng cách đọc một tập tin, và trên máy tính nào là tập tin này? –

+7

@MikeSamuel 'FileReader' và' File' là một phần của javascript kể từ HTML5: https://developer.mozilla.org/en/DOM/FileReader –

Trả lời

8

Tôi tin rằng đây là câu trả lời của bạn: How to open a local disk file with Javascript?

Nói tóm lại, bạn đang tìm kiếm một cái gì đó như thế này:

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

HTML5 cho phép bạn tải các tập tin được lưu trữ cục bộ trên máy tính, nhưng bạn không thể chọn nó. Người dùng phải chọn tệp mà họ muốn được tải.

Chỉ cần tưởng tượng điều gì sẽ xảy ra khi các nhà phát triển (hoặc tốt hơn nói, tin tặc) sẽ có quyền truy cập vào dữ liệu trên máy của mọi người ...

+0

Đây là những gì tôi đã sợ ... Vì vậy, tôi tưởng tượng rằng tôi không thể tạo ra một trò chơi phức tạp (với rất nhiều tài nguyên động) theo cách này ... Tôi sẽ phải lưu trữ trò chơi trên máy chủ web một yêu cầu tạo vào nội dung. –

+0

Có, máy chủ là cần thiết cho điều đó. Tùy chọn khác có thể là tạo trang web trên máy chủ cục bộ và sau đó chuyển đổi nó thành tệp .exe bằng cách sử dụng một số phần mềm được liệt kê (Tôi không chắc là nó có tương thích với HTML5 chưa): https://www.google.com/search?client=opera&rls = vi & q = tạo + trang web + stanalone + executable & sourceid = opera & ie = utf-8 & oe = utf-8 & channel = đề xuất – DRAX

1

Đây là một câu hỏi cũ và tôi chắc chắn rằng rất nhiều người đã chạy vào cùng một vấn đề, nhưng một khi JS trở thành một ứng dụng độc lập (và đây là một điều phiền toái khi phải hack theo cách của mình, nhưng tôi đoán ngày càng nhiều ứng dụng JS sẽ là client-server anyways). công cụ anyway.

Một cách để tạo dữ liệu theo cách có thể bảo trì và sau đó chuyển nó sang JavaScript mà tôi đang sử dụng là viết một tập lệnh đơn giản, tập hợp các tệp nội dung và phân tích nội dung thành JSON trong tệp data.js cũ lớn . Điều này sau đó có thể được bao gồm và hoạt động chính xác giống như các đối tượng Javascript thông thường. Một cũng có thể sử dụng JSON để lưu trữ dữ liệu ở nơi đầu tiên, tất nhiên, nhưng đó là nhiều chi tiết hơn một cái gì đó giống như CSV đơn giản nếu bạn có rất nhiều dữ liệu cho ứng dụng của bạn.

0

Tôi có mã lừa đảo cho trường hợp này.

tôi đặt tên tập tin của tôi JSON như một .js: jsonfile.js, trong đó có chứa dữ liệu json của tôi như là một biến chuỗi:

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

Trong index.html của tôi, tôi cho nó, trước khi .js của tôi với mã:

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

Sau đó, tôi có thể nhận được dữ liệu của tôi như đối tượng JSON trong mycode.js như thế này:

var data = JSON.parse(jsondata); 
alert(data.foo); 
Các vấn đề liên quan