IE中createElement需要注意的一个问题
更新时间:2010年07月13日 21:12:41 作者:
最近有读者求助,说在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://demo.jb51.net/js/IE-createElement/page1.htm
总结:
如果你想在IE6,IE7中创建一个父页面元素,那么你必须使创建元素属于父页面。
var dummy = parent.document.createElement("div");
var t = parent.document.createElement("table");
在Firefox,IE8中,它允许在一个文档中创建要追加到另一个文档的元素。
所以在Firefox,IE8中,可以使用parent.document也可以使用document。
另外google浏览器非常怪异,很乱。如果要兼容google浏览器,那么建议换种思路吧,比如直接用 parent.函数名() 调父页面的方法。
复制代码 代码如下:
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://demo.jb51.net/js/IE-createElement/page1.htm
总结:
如果你想在IE6,IE7中创建一个父页面元素,那么你必须使创建元素属于父页面。
复制代码 代码如下:
var dummy = parent.document.createElement("div");
var t = parent.document.createElement("table");
在Firefox,IE8中,它允许在一个文档中创建要追加到另一个文档的元素。
所以在Firefox,IE8中,可以使用parent.document也可以使用document。
另外google浏览器非常怪异,很乱。如果要兼容google浏览器,那么建议换种思路吧,比如直接用 parent.函数名() 调父页面的方法。
您可能感兴趣的文章:
- createElement与createDocumentFragment的点点区别小结
- javascript createElement()创建input不能设置name属性的解决方法
- Javascript createElement和innerHTML增加页面元素的性能对比
- createElement动态创建HTML对象脚本代码
- getElementByID、createElement、appendChild几个DHTML元素
- 动态加载js文件 document.createElement
- document.createElement("A")比较不错的属性
- document.createElement()用法
- document.createElement()用法及注意事项(ff下不兼容)
相关文章
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
这篇文章主要介绍了JS+HTML5本地存储Localstorage实现注册登录及验证功能,结合实例形式分析了基于JS+HTML5本地存储Localstorage实现注册登录及验证相关操作技巧,需要的朋友可以参考下2020-02-02
iphone safari不支持position fixed的解决方法
最近一直在做移动web开发,开发过程中遇到了许多问题,mobile safari不支持position: fixed就是一件很头疼的事情2012-05-05
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
今天小编就为大家分享一篇解决Layui选择全部,换页checkbox复选框重新勾选的问题方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-08-08
JavaScript requestAnimationFrame动画详解
这篇文章主要为大家详细介绍了JavaScript requestAnimationFrame动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-09-09


最新评论