IE 6/8上的ExtJs奇怪的行为:'locked'为空

时间:2011-06-20 15:54:00

标签: internet-explorer extjs

我用ExtJS开发了一个页面。它适用于FF,Chrome和Opera,但不适用于IE。

在IE中我有这样的信息:

  

网页错误详情

     

用户代理:Mozilla / 4.0(兼容;   MSIE 7.0; Windows NT 5.1;三叉戟/ 4.0)   时间戳:2011年6月20日星期一15:51:23   UTC

     

消息:'已锁定'为空或不是   对象行:14364字符:13代码:0   URI:   http://192.168.240.129/lib/ext4/ext-all-debug.js

     

消息:抛出异常而不是   捕获行:25281字符:9代码:0   URI:   http://192.168.240.129/lib/ext4/ext-all-debug.js

我不知道为什么它指的是'锁定'。我的页面中没有锁定变量或其他变量。

如果您有任何想法或答案,谢谢。

2 个答案:

答案 0 :(得分:3)

你失败的地方的一些源代码真的会有所帮助。

但这就是我要弄清楚发生了什么。使用firebug的堆栈跟踪来跟踪代码中的哪个组件失败。您需要密切关注DOM ID。

您还可以从评论可疑面板开始。一旦您确定了面板存在问题,您就可以将问题范围缩小到失败的确切组件。

关于“锁定”的问题,您可以参考API以查看哪些类具有某种锁定。就在我的脑海中,我可以想到一些如CheckBoxSelection Model。

答案 1 :(得分:2)

在IE中使用ExtJs时,您需要考虑IE的JSON解析器比Chrome或FF严格得多。例如,考虑这个JSON:

var Model = {
   property1: '1',
   property2: '2',
   property3: '3',
   property4: '4',
   property5: '5',
}

它对所有市长浏览完全有效,所以你在使用它时不会出现任何错误,但是注意到最后一个元素的最后一个昏迷,IE的问题就开始了。如果你在Chrome / FF上获得这样的对象的长度,那么该值将是5,而在IE中它将是6.这意味着IE中的解析器认为在最后一次昏迷之后第6个空元素。这就是打破你的ExtJs的原因。

清除代码以避免额外逗号的一种好方法是使用http://www.jslint.com/验证您的代码

相关问题