YUI的onDOMReady方法在IE下面的iframe中有执行问题?

Posted by | Posted in Javascript | Posted on 14-07-2009

         今天在解决一个IEbug的时候发现:在IE下面的iframe中使用YUI的onDOMReady方法遇到了执行顺序的问题。具体来说,iframe页面中link了2个js文件a.js和b.js。a.js中执行了一段onDOMReady方法,调用a.js中的functionA()和b.js中的functionB();而在页面中这两个js文件是b.js放在a.js的后面被加载进来的。当页面的dom加载完成之后,应该执行functionA和functionB。但是事实上是页面并没有去执行functionB,报错functionB为空。

       var E = Yahoo.util.event;

       E.onDOMReady(

functionA();

functionB();

        );

         有人会说原因很简单,执行a.js中的那段调用b.js中functionB的时候b.js还没有被加载进来。使用window.onload方法就可以解决,但是遗憾的是onload在iframe下也是没有起作用。这个时候为了调试页面,在这段onDOMReady中添加一个alert()之后,页面在报错点击确定之后却正常执行了b.js中的functionB(),这个时候分析觉得是alert延长了页面的加载时间,在alert的同时页面调用了b.js文件。

于是对页面进行改造,把这段onDOMReady代码放在b.js中去执行,就可以解决问题了。从本质上说是由于IE浏览器对iframe中的js加载顺序解析和其他浏览器有所不同。具体不同还不是很清楚,从YUI的文档中也没有提到这点相关信息。希望知道的人可以帮忙解答一下