2011-05-16 98 views
1

我忙于一个项目,并且有一些额外的JavaScript文件需要在项目运行时加载。现在我已经创建了以下代码:动态脚本加载

var script = _thisIframe.contentDocument.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'main.js?' + Math.random(); 

_thisIframe.contentDocument.body.appendChild(script); 

此代码在Firefox,Safari,Chrome,Opera IE9和IE8中正常工作。但它好好尝试一下在IE7 在这里,我得到以下错误:当它的的createElement线创建

SCRIPT5007: Unable to get value of the property 'createElement': object is null or undefined

错误。

我搜索了这种类型的错误,但我没有找到答案。

感谢

回答

1

contentDocument不支持IE7,或者更具体地说,你得到这个错误,因为contentDocument不是_thisIframe,因此返回undefined,这当然没有createElement()方法的属性。

使用contentWindow.document支持IE7。

一个简单的方法来获得正确的属性是利用了||逻辑运算符和short circuiting性质,以及在JavaScript的条件返回上次评估值(次数最多的truthy数)。

var doc = _thisIframe.contentDocument || _thisIframe.contentWindow.document; 
+0

哎呀。这是问题所在。谢谢! – jeroenjoosen 2011-05-16 12:10:55