【发布时间】:2013-05-08 19:23:51
【问题描述】:
所以我有一个运行 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(){ 块中取出,结果相同。
【问题讨论】:
-
希望我能为您提供解决方案。我只能说,IE 是最大的垃圾。它给我的只是问题。我创建的特殊解决方法始终与 IE 相关。无论如何,这里的亮点是我一直能够找到解决 IE 垃圾的方法......
-
你如何/在哪里调用解析器?
-
我在 Dojo 1.9 和 IE10 上遇到了同样的问题
-
感谢 cmets。我刚刚用关于我如何调用解析器的信息更新了我的问题。
-
您如何验证问题出在 parser.parse 调用中?
标签: javascript internet-explorer parsing dojo