Answers:
您可以使用dataurl-syntax将图像嵌入HTML文档中,该语法允许将二进制图像数据的base64表示形式作为图像的src属性。这也适用于任何其他类型的媒体文件。
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EFBAoYMhVvMQIAAAAtSURBVHicY/z//z8DHoBH+v///yy4FDEyMjIwMDDhM3lgpaEuh7gTEzDiDxYA9HEPDF90e5YAAAAASUVORK5CYII=">
使用CSS样式表时,可以使用JavaScript完全创建这些过程。
仅将所有文件放入.zip文件中不是可行的解决方案,因为大多数Web应用程序都需要Web服务器,以便它们可以通过HTTP请求访问资源。在某些系统上,您可以通过file://
URI方案访问文件,但是由于安全原因,不能保证该文件在任何地方都能正常工作,并且会因AJAX请求等原因而失败。
它可能适用于一个非常简单的应用程序,在该应用程序中您拥有最多的内联资源,但这确实不是我向所有人推荐的方法。但是,还有其他选择,例如:
您可以使用Node-Webkit将Web应用程序打包为本地应用程序。您甚至可以使用它向游戏添加本机桌面功能(例如本地保存游戏)。
不过,这不是“ 打包完成 ”的方法。您可能必须重写应用程序的一部分并编写不同的加载程序(例如,对于台式机应用程序,您宁愿通过文件系统加载文件,而使用HTTP -浏览器/在线游戏中的请求)。
如果您的主要目标是允许玩家离线玩游戏,那么您也可以使用应用程序缓存来允许离线访问您的应用程序。这是在大多数现代浏览器中均可使用的功能。额外的好处是,用户无需下载任何内容,即使离线也可以使用书签来玩游戏。
对于异步加载(AJAX)的资源,您还必须实现单独的加载机制。您可以利用本地存储来保存这些资源以供脱机使用。
file:///
协议访问localStorage
,以进行保存。它可以扩展为HTML游戏中除在线游戏之外可以做的任何事情。
要使基于Chrome的解决方案能够离线运行游戏并享受某些本机功能,可以考虑制作Chrome应用。
这样,您可以将其分发到Chrome Web Store中以提高可见性,可以使用一些强大的API,并使它看起来更像一个独立的应用程序。
缺点当然是需要Chrome。
好吧,这取决于您真正想要投入多少工作。使用当前的一组Web API,您可以:
Cmd+S
或Ctrl+S
在浏览器中)或将网页缓存为PWA。只是知道,在移动设备上,dataURI的性能不是很好。zip
文件,请签出JSZip。我不知道如何使用它,但是我确定有人可以提出一个好主意(也许压缩文件,然后将二进制数据转换为字符串并将其内联到html中)。