日期:2014-05-16  浏览次数:20375 次

对象不支持此属性或方法(ext-all.js文件中)
同事写了一个最基本的EXT3.2的例子,就一个基本JSP页面,弹出一个EXT的对话框。



结果在IE8上报错对象不支持此属性或方法(ext-all.js文件中),让我帮忙调试。觉得简简单单几行代码,怎么会出现这种错误?我先用我自己的IE登录他的页面,一样的错误。但当我想用火狐进一步跟踪的时候,居然发现火狐上面没有异常,换Chrome,也没有错误。看来错误只出现在IE上。



可是短短几行代码,翻来覆去,也瞧不出有任何错误。代码如下:




Html代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
    <head>  
        <title>你好</title>  
        <link rel="stylesheet" type="text/css" href="styles/ext-all.css" />  
        <script type="text/javascript" src="scripts/ext-base.js"></script>  
        <script type="text/javascript" src="scripts/ext-all.js"></script>  
        <script type="text/javascript">  
              
            Ext.onReady(function(){  
                //  Ext.QuickTips.init();  
                Ext.MessageBox.alert("fff", "fffffff");  
            });  
        </script>  
    </head>  
    <body>  
        hello World  
    </body>  
</html> 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>你好</title>
  <link rel="stylesheet" type="text/css" href="styles/ext-all.css" />
  <script type="text/javascript" src="scripts/ext-base.js"></script>
  <script type="text/javascript" src="scripts/ext-all.js"></script>
        <script type="text/javascript">
           
            Ext.onReady(function(){
                // Ext.QuickTips.init();
                Ext.MessageBox.alert("fff", "fffffff");
            });
        </script>
    </head>
    <body>
     hello World
    </body>
</html>


(上述代码中的路径都没有错误)。



最后才发现,原来是"hello Wolrd"这几个字造成的。确切的解释是,当使用EXT时,<body></body>中的第一个元素不能是纯文本,否则在IE上会报错误。



上官网想进一步了解原因,未果。同时了解到这个BUG在EXT2.X开始就存在了,居然一直没有解决,汗……



比较蹩脚的解决方式也很直接,在<body>后面填一个<span/>之类的就可以了,如下:




Html代码
<body>  
   <span/>  
    hello World  
</body>  <