我做了一个dojo构建,但是在启用/禁用构建时我想要灵活性,因此我尝试在HTML标头中的<script>
标记中加载:
<script src="js/config.js"></script>
<script src="/dojo/1.9/dojo/dojo.js" data-dojo-config="async: true"></script>
<script src="/dojo/1.9/dojo/dojo-all.js"></script>
我没有修改我的JS文件。它似乎起作用,但是,有一个问题,但只在IE9上,并且只在WebSphere上部署的应用程序版本上(我在Apache2上测试过)。问题是,在特定的代码片段中,属性“dir”未定义:
geom.isBodyLtr = function isBodyLtr(doc) {
doc = doc || win.doc;
return (win.body(doc).dir || doc.documentElement.dir
|| "ltr").toLowerCase() == "ltr";
};
在搜索了类似的问题后(例如:How to prevent "Unable to get value of the property 'dir': object is null or undefined" error when loading pages in IE9),我发现它可能是一些加载序列问题。我已从HTML标题中删除了该图层,并按以下顺序将其加载到我的JS中:
require(["dojo/domReady!"], function(){
// load the layers, but only after document is ready
require(['dojo/dojo-all'], function(){
require(["dojo", "dojo/on", "dojo/dom-attr", "dojo/dom-class", (... and hundred more)
但是,我知道人们正在加载HTML标头中的构建,例如来自此处的主题:Dojo Builds...? What now?
所以我的问题是,我做错了什么,或者HTML标题的技巧不能保证在所有浏览器上都有效?
这是我的构建脚本配置:
'dojo/dojo': {
include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
boot: true,
customBase: true
},
'dojo/dojo-all': {
include: ["dojo/on", "dojo/dom-attr", "dojo/dom-class", "dojo/query", "dojo/_base/lang", "dojo/request/xhr",
"dijit/registry","dijit/form/TextBox", "dijit/form/Textarea", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dijit/form/CheckBox", "dijit/form/Button",
"gridx/core/model/cache/Sync", "gridx/Grid", "gridx/modules/SingleSort", "gridx/modules/ColumnResizer",
(...and hundred more)],
boot: false, // exclude bootstrap modules
customBase: false
},
这是来自dojo的build.bat:
java -Xms256m -Xmx256m -cp "%~dp0../shrinksafe/js.jar";"%
~dp0../closureCompiler/compiler.jar";"%~dp0../shrinksafe/shrinksafe.jar"
org.mozilla.javascript.tools.shell.Main "%~dp0../../dojo/dojo.js"
baseUrl="%~dp0../../dojo" load=build %*
答案 0 :(得分:2)
我们最近遇到了与图层文件加载顺序相同的问题。要使它与IE9一起工作,你真的需要控制图层文件加载的顺序,所以是的,最简单和最可靠的方法是require
你的图层文件,而不是使用<script>
来加载它们。
查看本页底部的示例,其中包含需要嵌套的另一个需求:
http://www.sitepen.com/blog/2012/06/11/dgrid-and-dojo-nano-build/
我们刚刚对产品进行了完全相同的更改,以避免IE9和IE10的偶发故障(包含7层文件,其中一个需要覆盖其中一个模块中定义的旧版本模块)。 <script
&GT; 似乎在一段时间内工作正常,但事实证明我们不能依赖。