IE中createElement需要注意的一個問題
更新時間:2010年07月13日 21:12:41 作者:
最近有讀者求助,說在iframe中,創(chuàng)建一個元素,然后添加到父頁面中在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,發(fā)現(xiàn)確實是這樣。
翻了翻資料,也沒看到類似的問題。
然后使用原生的DOM方法寫了一次,發(fā)現(xiàn)也不行,一樣。
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,那么創(chuàng)建的時候是否也要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
總結(jié):
如果你想在IE6,IE7中創(chuàng)建一個父頁面元素,那么你必須使創(chuàng)建元素屬于父頁面。
var dummy = parent.document.createElement("div");
var t = parent.document.createElement("table");
在Firefox,IE8中,它允許在一個文檔中創(chuàng)建要追加到另一個文檔的元素。
所以在Firefox,IE8中,可以使用parent.document也可以使用document。
另外google瀏覽器非常怪異,很亂。如果要兼容google瀏覽器,那么建議換種思路吧,比如直接用 parent.函數(shù)名() 調(diào)父頁面的方法。
復(fù)制代碼 代碼如下:
var $alertPanel = $( document.createElement("div") );
$alertPanel.css("width","120px").css("height","50px").text("Hello CssRain!");
$('body',parent.document).append($alertPanel);
順著他的意思,我也寫了個Demo,發(fā)現(xiàn)確實是這樣。
翻了翻資料,也沒看到類似的問題。
然后使用原生的DOM方法寫了一次,發(fā)現(xiàn)也不行,一樣。
復(fù)制代碼 代碼如下:
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,那么創(chuàng)建的時候是否也要parent.document.createElement呢?
于是把代碼改成:
復(fù)制代碼 代碼如下:
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
總結(jié):
如果你想在IE6,IE7中創(chuàng)建一個父頁面元素,那么你必須使創(chuàng)建元素屬于父頁面。
復(fù)制代碼 代碼如下:
var dummy = parent.document.createElement("div");
var t = parent.document.createElement("table");
在Firefox,IE8中,它允許在一個文檔中創(chuàng)建要追加到另一個文檔的元素。
所以在Firefox,IE8中,可以使用parent.document也可以使用document。
另外google瀏覽器非常怪異,很亂。如果要兼容google瀏覽器,那么建議換種思路吧,比如直接用 parent.函數(shù)名() 調(diào)父頁面的方法。
您可能感興趣的文章:
- createElement與createDocumentFragment的點點區(qū)別小結(jié)
- javascript createElement()創(chuàng)建input不能設(shè)置name屬性的解決方法
- Javascript createElement和innerHTML增加頁面元素的性能對比
- createElement動態(tài)創(chuàng)建HTML對象腳本代碼
- getElementByID、createElement、appendChild幾個DHTML元素
- 動態(tài)加載js文件 document.createElement
- document.createElement("A")比較不錯的屬性
- document.createElement()用法
- document.createElement()用法及注意事項(ff下不兼容)
相關(guān)文章
javascript實現(xiàn)多張圖片左右無縫滾動效果
本文主要介紹了javascript實現(xiàn)多張圖片左右無縫滾動效果的實例。具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03
原生JS實現(xiàn)循環(huán)Nodelist Dom列表的4種方式示例
這篇文章主要介紹了原生JS實現(xiàn)循環(huán)Nodelist Dom列表的4種方式,結(jié)合具體實例形式分析了javascript循環(huán)遍歷Nodelist Dom列表的常用操作技巧,需要的朋友可以參考下2018-02-02
JS+HTML5本地存儲Localstorage實現(xiàn)注冊登錄及驗證功能示例
這篇文章主要介紹了JS+HTML5本地存儲Localstorage實現(xiàn)注冊登錄及驗證功能,結(jié)合實例形式分析了基于JS+HTML5本地存儲Localstorage實現(xiàn)注冊登錄及驗證相關(guān)操作技巧,需要的朋友可以參考下2020-02-02
iphone safari不支持position fixed的解決方法
最近一直在做移動web開發(fā),開發(fā)過程中遇到了許多問題,mobile safari不支持position: fixed就是一件很頭疼的事情2012-05-05
解決Layui選擇全部,換頁checkbox復(fù)選框重新勾選的問題方法
今天小編就為大家分享一篇解決Layui選擇全部,換頁checkbox復(fù)選框重新勾選的問題方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
JavaScript requestAnimationFrame動畫詳解
這篇文章主要為大家詳細介紹了JavaScript requestAnimationFrame動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09

