所以我有一个运行 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(){ 块中取出,结果相同。