Javascript 使用Dojo1.9,IE中的所有解析都会失败
所以我有一个相当大的web应用程序运行Dojo1.8。在IE和Firefox的多个版本中,一切都运行良好。我决定试一试1.9,并将依赖关系从1.8改为1.9。Firefox在第一次运行时运行良好,没有明显的变化。然而,IE版本8和9都没有做任何事情。所有静态HTML内容(和动态jsp内容)都很好,所有用于获取所需模块的ajax调用似乎都很好,但解析器的行为就像从未被调用过一样。控制台中没有错误、警告或任何内容 我一直在玩我的dojo配置,这没什么特别的:Javascript 使用Dojo1.9,IE中的所有解析都会失败,javascript,internet-explorer,parsing,dojo,Javascript,Internet Explorer,Parsing,Dojo,所以我有一个相当大的web应用程序运行Dojo1.8。在IE和Firefox的多个版本中,一切都运行良好。我决定试一试1.9,并将依赖关系从1.8改为1.9。Firefox在第一次运行时运行良好,没有明显的变化。然而,IE版本8和9都没有做任何事情。所有静态HTML内容(和动态jsp内容)都很好,所有用于获取所需模块的ajax调用似乎都很好,但解析器的行为就像从未被调用过一样。控制台中没有错误、警告或任何内容 我一直在玩我的dojo配置,这没什么特别的: var dojoConfig = {
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突然又开始工作了。正如您所能想象的,我真的希望异步为true。为什么这会绊倒你?我希望我提供了足够的信息
编辑:我通过在名为common.js的文件的标记底部包含一个脚本标记来调用解析器,大致如下所示:
require([
"dojo/parser",
"dojo/ready"
],
function(parser, ready){
ready(function(){
parser.parse();
});
});
我已经尝试将dojo/ready换成dojo/domrready!并将parser.parse从ready(function(){block)中取出,得到相同的结果。一个快速解决方法是将src发行版中的dijit/templates、dijit/form/templates和dijit/layout/templates文件夹复制到dojo发行版中
有关详细信息,请参见和。我敢说我自己的答案比迪吉特公司的首席执行官比尔·基斯(Bill Keese)更正确……) 但是,说真的,自从Bill发布了这篇文章以来,实际问题已经得到了纠正和解决。Dojo的ticket#17141解决了这一问题,并包含在最新的1.9.1版本中:
更新到此版本后,问题得到了解决,IE现在运行良好。希望我能为您找到一个解决方案。我能说的是,IE是最大的垃圾。它只会给我带来问题。我创建的特殊解决方案总是与IE相关的。总之,这里的亮点是我总能找到IE的解决方案bage…你是如何/在哪里调用解析器的?我对Dojo 1.9和IE10也有同样的问题,谢谢你的评论。我刚刚用我如何调用解析器的信息更新了我的问题。你是如何验证问题是否存在于解析器中的。parse调用?