parser.parse()无法在IE9容器(dojo 1.7.2)中解析

parser.parse()无法在IE9容器(dojo 1.7.2)中解析,dojo,Dojo,我尝试手动解析以下代码,因为我已经按照这个示例创建了一个预加载程序(http://acuriousanimal.com/blog/2010/12/05/how-to-create-a-preloader-in-dojo/): 如果您考虑到以上代码即使在IE9中也能完美工作,那么当我使用parseOnLoad:true时,有人知道我做错了什么吗 感谢99%的确定性,错误是由于dlang.getObject(type)返回空指针造成的。我的猜测是AMD加载程序(可能设置为async:true)尚未完

我尝试手动解析以下代码,因为我已经按照这个示例创建了一个预加载程序(http://acuriousanimal.com/blog/2010/12/05/how-to-create-a-preloader-in-dojo/):

如果您考虑到以上代码即使在IE9中也能完美工作,那么当我使用parseOnLoad:true时,有人知道我做错了什么吗


感谢

99%的确定性,错误是由于
dlang.getObject(type)
返回空指针造成的。我的猜测是AMD加载程序(可能设置为async:true)尚未完成错误中提到的模块的下载和声明。为了克服这一点,您必须适应AMD模式,该模式引入了需求,并在它们准备好后运行(每个需要的模块都是)。尝试按如下方式包装parser.parse():

<script src="path_to_dj/dojo/dojo.js"></script>
<!-- dojo must be loaded first - obviously -->
<script type="text/javascript">

  require(
    {/*using defaults*/},         /* local conf */ 
    [                             /* every single requirement, mapped to cb params below */
      "dijit/layout/BorderContainer",
      "dijit/layout/TabContainer"
      // optionally uncomment below line to have callback wait domReady event
      //, "dojo/domReady!"
    ],
    function(dep1, dep2, dep3) {  /* callback for XHR.readyState=4/SCRIPT.onload */

          parser.parse(dojo.body());

    }
  );

</script>

要求(
{/*使用默认值*/},/*本地配置*/
[/*每个需求,映射到下面的cb参数*/
“dijit/layout/BorderContainer”,
“dijit/layout/TabContainer”
//(可选)取消第行下方的注释,以使回调等待domReady事件
//,“dojo/domReady!”
],
函数(dep1、dep2、dep3){/*XHR.readyState=4/SCRIPT.onload的回调*/
parser.parse(dojo.body());
}
);

数据dojo配置属性是什么样子的?require语句及其回调看起来是什么样的?不知道更多的html内容-我敢打赌问题与DOCTYPE相关,并且回到了某种奇怪的模式(解释浏览器的不同行为)。但问题是“原子”类加载——需要按照正确的顺序进行排序。在拉入所有必需的模块之前,解析器无法运行。感谢大家的建议。通过在脚本块I call parser.parse()中要求解析器必须处理的所有模块来解决这个问题。IE似乎需要这样做,但其他浏览器可以“使用”我使用的其他脚本块中的模块。因此,您必须在要调用parse()的脚本块中加载解析器需要解析的所有模块,正如答案中所述:P
darray.forEach(nodes, function(obj){
                        if(!obj){ return; }

                        var node = obj.node || obj,
                                type = dojoType in mixin ? mixin[dojoType] : obj.node ? obj.type : (node.getAttribute(dataDojoType) || node.getAttribute(dojoType)),
                                ctor = _ctorMap[type] || (_ctorMap[type] = dlang.getObject(type)),
                                proto = ctor && ctor.prototype;
                        if(!ctor){
        Line 132  ---> throw new Error("Could not load class '" + type);
                        }
<script src="path_to_dj/dojo/dojo.js"></script>
<!-- dojo must be loaded first - obviously -->
<script type="text/javascript">

  require(
    {/*using defaults*/},         /* local conf */ 
    [                             /* every single requirement, mapped to cb params below */
      "dijit/layout/BorderContainer",
      "dijit/layout/TabContainer"
      // optionally uncomment below line to have callback wait domReady event
      //, "dojo/domReady!"
    ],
    function(dep1, dep2, dep3) {  /* callback for XHR.readyState=4/SCRIPT.onload */

          parser.parse(dojo.body());

    }
  );

</script>