2012-08-27 68 views
1

我目前正在开发加载外部资源的HTML5游戏。目前,我使用XMLHttpRequest的文件中读取,但无法在Chrome工作,导致为非托管的HTML5应用程序加载外部文件

XMLHttpRequest cannot load file:///E:/game/data.txt 
Cross origin requests are only supported for HTTP. 

的文件在同一目录HTML5文件。

问题:

  1. 有没有什么办法了HTML5应用程序使用XMLHttpRequest(或其他 法)在外部文件来加载,而不需要它是 托管在一个Web服务器?

  2. 如果我将HTML5代码打包为支持HTML5的平板电脑/手机 上的应用程序,XMLHttpRequest是否能够加载外部 文件?

回答

1
  1. (一)是,也不是。作为安全策略的一个问题,XHR在传统上一直都是同一协议(即:http://,而不是file:///),并且传统上一直是同域的在同一个子域中 - http://pages.site.com/index无法从http://scripts.site.com/获取文件)。跨域请求现在可用,但无论如何,它们都需要Web服务器,托管该文件的服务器必须专门接受请求。 (b)因此,以迂回的方式,答案是肯定的,一些实现可能(不正确)允许您通过XHR抓取文件,即使页面以文件系统术语发言,而不是http请求(老版本的浏览器)......但除此之外,你将需要一种或另一种Web服务器。好消息是它们很容易安装。 EasyPHP就足够了,它几乎是一个3点击解决方案。还有无数其他人。这只是首先想到的关于大脑安装的问题,如果你想要的只是apache中的文件服务器,并且你不打算使用服务器端脚本语言(或者如果你打算使用PHP)。

  2. 的XMLHttpRequest绝对会能够得到外部文件...
    IF他们实际上是外部的(即:在一个特定的手机高速缓存未捆绑 - 使用手机内置的文件 - 访问API,并编写一个包装器来处理每个具有相同定制接口的包),AND手机当前有接收 - 准备处理故障条件(如具有默认设置对象,或有错误处理或任何最好的情况下,无论缺少什么)。

    另请参阅Application Cache Manifests。同样,这是一个html5解决方案,不同版本的不同手机的处理方式不同(早期与标准化格式相比)。 不要在开发过程中使用它,因为它会使测试代码/内容变化非常慢并且疼痛,但是当您的产品几乎完成并且没有bug时,以及在启动之后几秒钟内,浏览器将所有内容永久存储,以便他们可以脱机播放,并且可以保存各种带宽,而无需在下次播放时下载所有内容。

相关问题