读者的进步速度远大于博客的进步速度。
« »
2010年07月27日TeamWork

645 views

IE中createElement需要注意的一个小问题.

最近有读者求助,说在iframe中,创建一个元素,然后添加到父页面中在ie6,ie7中行不通,而firefox和IE8可以。

代码如下:
var $alertPanel = $( document.createElement(“div”)  );

$alertPanel.css(“width”,”120px”).css(“height”,”50px”).text(“Hello CssRain!”);

$(‘body’,parent.document).append($alertPanel);

顺着他的意思,我也写了个Demo,发现确实是这样。

翻了翻资料,也没看到类似的问题。

然后使用原生的DOM方法写了一次,发现也不行,一样。

var div = document.createElement(“div”);
div.style.width = “120px”;
div.style.height = “50px”;
div.style.border = “solid 1px #000000″;
div.innerHTML = “Hello CssRain!”;
parent.document.body.appendChild(div);

于是想到既然appendChild要parent.document,那么创建的时候是否也要parent.document.createElement呢?

于是把代码改成:
var div = parent.document.createElement(“div”);
div.style.width = “120px”;
div.style.height = “50px”;
div.style.border = “solid 1px #000000″;
div.innerHTML = “Hello CssRain!”;
parent.document.body.appendChild(div);

这样就成功了, IE6和IE7能用。

看例子:

http://www.cssrain.cn/demo/IEcreateElement/page1.html

总结:

如果你想在IE6,IE7中创建一个父页面元素,那么你必须使创建元素属于父页面。
var dummy = parent.document.createElement(“div”);
var t = parent.document.createElement(“table”);

在Firefox,IE8中,它允许在一个文档中创建要追加到另一个文档的元素。
所以在Firefox,IE8中,可以使用parent.document也可以使用document。

另外google浏览器非常怪异,很乱。如果要兼容google浏览器,那么建议换种思路吧,比如直接用 parent.函数名() 调父页面的方法。

日志信息 »

该日志于2010-07-27 08:20由 admin 发表在TeamWork分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

  • 暂无相关日志

25条评论

  1. admin 说:

    你好

  2. 高兴seo 说:

    你好啊,我是高兴!从事网站优化!

  3. good post and good site,I will come back later…

  4. Rainbow 说:

    CSSRAIN,终于迁移出来了,安全,稳定,快速。等待好的博文推出。。。

  5. 好久没有来看博主了,送来祝福
    我QQ909021410

  6. 前来关注一下 ( ̄ε  ̄)

  7. 蓝牙姐姐 说:

    路过帮顶一下吧!

  8. 春花秋月 说:

    祝福您:幸福幸福还是幸福

  9. 丝袜 说:

    可以留言了

  10. MOPVHS 说:

    换WordPress啦~~~

  11. 创先争优 说:

    第一次来,不错的文章,很喜欢

  12. 蓝山咖啡 说:

    怎么改成BLOG啦。。。真别扭啊

  13. pc8 说:

    Is very good, to the top

  14. 这文章不错,博主继续写些好文出来!

  15. 淘宝网 说:

    网站文章写的很不错,RSS已经被我订阅了!

  16. 智能手机 说:

    不错的博客。 踩一下!

  17. bluehost 说:

    楼主的文章透彻入理。很感谢。

  18. fatcow 说:

    感谢楼主的分享,顶你。

  19. good 说:

    写的不错,佩服

  20. lala 说:

    路过 ,踩一脚 ,拜读,欣赏下

  21. airmaxshoes 说:

    IE7直接跳过了,用IE8就好了

  22. wjasp 说:

    学习了!!!

发表评论 »

返回顶部