3

所以我有一个运行 Dojo 1.8 的相当大的 Web 应用程序。在多个版本的 IE 和 Firefox 中一切正常。我决定尝试 1.9 并将我的依赖项从 1.8 更改为 1.9。Firefox 在第一次运行时运行良好,没有明显的变化。然而,IE 版本 8 和 9 都没有做任何事情。所有静态 HTML 内容(和动态 jsp 内容)都很好,所有用于获取所需模块的 ajax 调用似乎都可以正常工作,但解析器的行为就像它从未被调用过一样。控制台中没有错误、警告或任何内容。

我一直在玩我的 dojo 配置,这没什么特别的:

var dojoConfig = {
    baseUrl: "js/",
    async: true,
    has: {
            "dojo-firebug": true,
            "dojo-debug-messages": true
    },
    parseOnLoad: false,
    isDebug: true,
    tlmSiblingOfDojo: false,
    packages: [
        { name: "dojo", location: "dojo-release-1.9.0/dojo" },
        { name: "dijit", location: "dojo-release-1.9.0/dijit" },
        { name: "dojox", location: "dojo-release-1.9.0/dojox" }
    ]
};

我发现如果我注释掉 async: true,IE 突然又开始工作了。正如你可以想象的那样,我真的很想让 async 为真。为什么这会绊倒 IE?我希望我已经提供了足够的信息。

编辑:我通过在名为 common.js 的文件的标记底部包含一个脚本标记来调用解析器,该文件大致如下所示:

require([
    "dojo/parser", 
    "dojo/ready"
    ], 
    function(parser, ready){
        ready(function(){
            parser.parse();    
        });
    });

我已经尝试将 dojo/ready 换成 dojo/domReady!并将 parser.parse 从 ready(function(){ 块中取出,结果相同。

4

2 回答 2

2

一个快速的解决方法是将 dijit/templates、dijit/form/templates 和 dijit/layout/templates 文件夹从 src 分发版复制到您的 dojo 分发版中。

有关详细信息,请参阅https://bugs.dojotoolkit.org/ticket/17141https://bugs.dojotoolkit.org/ticket/17146

于 2013-05-27T23:50:11.463 回答
2

我敢于将我自己的答案标记为对 Dijit 领导者 Bil​​l Keese 的正确答案...... :)

但说真的,自从比尔发布了这个,实际的问题已经得到纠正和承诺。这已在 Dojo 的票证 #17141 中得到解决,并包含在最新的 1.9.1 版本中:

https://bugs.dojotoolkit.org/query?group=status&milestone=1.9.1

更新到这个版本解决了这个问题,现在 IE 可以正常工作了。

于 2013-07-15T18:12:18.283 回答