首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Extjs IE8 对象不支持此属性或步骤的bug

2012-10-29 
Extjs IE8 对象不支持此属性或方法的bug同事写了一个最基本的EXT3.2的例子,就一个基本JSP页面,弹出一个EXT

Extjs IE8 对象不支持此属性或方法的bug

同事写了一个最基本的EXT3.2的例子,就一个基本JSP页面,弹出一个EXT的对话框。

?

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

?

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

?

<%@ 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/>之类的就可以了,如下:

?

<body>   <span/>    hello World</body>
?

唉,其实EXT做的真的很不错。

Ext.onReady(function(){ var data= [ {name:'Jul 07', visits: 0.001, views: 0.002}, {name:'Aug 07', visits: 0.002, views: 0.002}, {name:'Sep 07', visits: 0.003, views: 0.003}, {name:'Oct 07', visits: 0.004, views: 0.004}, {name:'Nov 07', visits: 0.005, views: 0.001}, {name:'Dec 07', visits: 0.006, views: 0.002}, {name:'Jan 08', visits: 0.007, views: 0.003}, {name:'Feb 08', visits: 0.508, views: 0.001} ]var store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.JsonReader({}, [{name: 'name'}, {name: 'visits',type:'float'}, {name: 'views',type:'float'} ])});store.load(); // extra extra simple new Ext.Panel({ title: 'ExtJS.com Visits Trend', applyTo: 'container', width:500, height:300, layout:'fit', items:{ xtype: 'linechart', store: store, xField: 'name', listeners: { itemclick: function(o){ var rec = store.getAt(o.index); Ext.example.msg('Item Selected', 'You chose {0}.', rec.get('name')); } }, series: [{//列 type: 'line', //类型可以改变(线) displayName: 'Visits', yField: 'visits', style: { color:0xE1E100 } }] } });});&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;你好&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css" href="styles/ext-all.css" /&gt;
&lt;script type="text/javascript" src="scripts/ext-base.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="scripts/ext-all.js"&gt;&lt;/script&gt;
        &lt;script type="text/javascript"&gt;
           
            Ext.onReady(function(){
                //Ext.QuickTips.init();
                Ext.MessageBox.alert("fff", "fffffff");
            });
        &lt;/script&gt;
    &lt;/head&gt;
    &lt;body&gt;
    hello World
    &lt;/body&gt;
&lt;/html&gt;</pre>
<p>?</p>
<p>(上述代码中的路径都没有错误)。</p>
<p>?</p>
<p>最后才发现,原来是"hello Wolrd"这几个字造成的。确切的解释是,<span style="color: #3366ff;">当使用EXT时,&lt;body&gt;&lt;/body&gt;中的第一个元素不能是纯文本,否则在IE上会报错误</span>。</p>
<p>?</p>
<p>上官网想进一步了解原因,未果。同时了解到这个BUG在EXT2.X开始就存在了,居然一直没有解决,汗……</p>
<p>?</p>
<p>比较蹩脚的解决方式也很直接,在&lt;body&gt;后面填一个&lt;span/&gt;之类的就可以了,如下:</p>
<p>?</p>
<p>?</p>
<pre name="code" class="js">...
sh = Ext.get(Ext.DomHelper.insertHtml("afterBegin", document.body, markup));
...</pre>
<p>?</p>
<p>也可以改进insertHtml,这个就要靠Extjs dev干了……</p>
<p>?</p>
<p>PS: 题外话,LS的应该去问答频道发,现在在搞活动,愿意回答的人很多……</p> 5 楼 jianpc 2010-08-17   不好意思啊,第一次用javaeye。。。还以为不能发帖子就啥都干不了了。灰常感谢 6 楼 meteorzc 2010-08-17   呵呵,有意思!

热点排行