2013-05-14 65 views
3

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

我一直跟我的道场的配置,这是没有什么特别的比赛:

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" } 
    ] 
}; 

我发现,如果我注释掉异步:真的,IE突然开始工作了。你可以想象,我真的想要异步真实。为什么这个绊倒IE?我希望我已经提供了足够的信息。

编辑:我被包括在标签的一个名为common.js文件,它看起来大致是这样的底部的脚本标签调用解析器:

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

我试着换出道场/准备好dojo/domReady!并把解析器解压出来(function(){block也是一样的结果。

+0

希望我有一个解决方案给你。我只能说IE是那里最大的垃圾。它只给我一些问题。我创建的特殊解决方法始终与IE相关。无论如何,这里的亮点是,我一直能够找到一个解决方法,为IE垃圾... – GoinOff 2013-05-14 13:55:10

+0

你/你在哪里调用解析器? – BuffaloBuffalo 2013-05-14 14:27:30

+0

感谢您的意见,我对Dojo 1.9和IE10 – 2013-05-14 15:21:19

回答

2

我敢纪念我自己的答案是正确的了比尔Keese酒店时,Dijit的铅... :)

但严重的是,由于比尔张贴了这个,实际的问题已得到纠正,并提交。这是在票#17141在以上道场解决,并包含在最新的1.9.1版本:

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

更新至该版本修正了这个问题,现在IE正常工作。

0

我觉得这个解析器太早调用了。使用同步方式加载(把async放在false上),加载所有内容需要相当长的时间 我曾经有类似的问题,并且通过使用较低的优先级(=较高的值),我们设法让事件延迟到足以让所有的东西都能正常工作。这个:

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

如果不行的话k,尝试使用更高的数字。这可能不是一个干净的解决方案,但它可能工作。

数字1001不是由顺便组成的。在Dojo中有几个“保留”的优先级,当您不指定优先级时,将使用优先级1000。还有一些其他数字,例如,当您使用优先级80时,它将在自动分析发生之前执行。

+0

感谢您的回应...不幸的是,它没有奏效。我尝试将数字更改为79,81,1001和10001,但我仍然得到相同的行为。 – Bal 2013-05-17 18:15:00