我使用dojo框架开发了一个Web应用程序。此应用必须由浏览器使用file:/// protocol加载(它将成为Android / iPad的Cordova / Phonegap应用程序)。 index.html文件如下所示:
主管部分:
<script type="text/javascript">
var dojoConfig = {
parseOnLoad: true
}
</script>
<script type="text/javascript" src=""dojo.js"/>
<script type="text/javascript">
dojo.require("dojox.mobile.parser");
dojo.require("dojox.mobile");
</script>
正文部分:
<script type="text/javascript">
dojo.require("dojox.mobile.parser");
dojo.require("dojox.mobile");
</script>
摘自IBM课程(Mobile application development, Part 1: PhoneGap and Dojo Mobile on Android)
所以有两个问题:
1)dojo尝试加载模块但未能使用file:///协议进行加载。 HTTP协议是必需的。
2)在index.html中,我使用Web构建器制作的dojo自定义构建。这个版本由一个包含我需要的模块的文件组成。但是,必须要求这些模块使框架尝试从未存在的文件中加载它们,尽管它们已经加载到大型自定义dojo.js中
可能有人知道如何解决这两个问题。
答案 0 :(得分:0)
您在哪个浏览器上测试代码? 由于安全问题,Chrome不允许在单个Html文件中包含多个域。 在firefox浏览器上尝试你的代码,它应该提示警告并运行代码。 还要确保index.html文件位于dojo源(dojo库)的父目录中。即
您的目录结构应如下所示
| - [dojo_source / dojo_library]
|
|。-index.html
还可以在浏览器中使用文件协议运行代码 文件://
希望这有帮助。
另一种方法是安装Web服务器。你可以试试&#34; mongoose&#34;网络服务器,非常轻,只有136KB的大小。然后,您可以设置它来运行您的道场代码。我一直在使用Web服务器,它非常适合对我的代码进行单元测试。
答案 1 :(得分:0)
你根本无法通过文件协议使用dojo,因为AMD引擎通过XHR请求延迟加载依赖项,这将无法正常工作。
请参阅:http://www.sitepen.com/blog/2014/07/30/dojo-faq-why-do-i-need-to-use-an-http-server-with-dojo/
考虑简单地使用节点js webserver进行开发并在手机应用程序中嵌入小型Web服务。
由于兼容性问题,您仍然可以尝试通过过时但仍然可用的接口dojo.someModule访问模块,因为模块是在全局命名空间中定义的。但是我不确定这是否运作良好。
您还可以尝试在dojo配置中将async设置为false。