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 鼠標(biāo)拖動圖標(biāo)技術(shù)
剛剛學(xué)習(xí)了個js的小技術(shù),還蠻好玩的,以后會把做的一些小例子貼上來,方便自己也可以跟大家一起分享學(xué)習(xí)成果,哈哈~~2010-02-02JavaScript讀寫二進(jìn)制數(shù)據(jù)的方法詳解
avascript里有兩個內(nèi)置對象,一個是ArrayBuffer;一個是DataView,讀寫二進(jìn)制數(shù)據(jù)都需要使用這兩個對象。這篇文章主要給大家介紹了關(guān)于JavaScript讀寫二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下2018-09-09IE6-8中Date不支持toISOString的修復(fù)方法
這篇文章主要介紹了IE6-8中Date不支持toISOString的修復(fù)方法,需要的朋友可以參考下2014-05-05safari,opera嵌入iframe頁面cookie讀取問題解決方法
最近做的合作網(wǎng)站嵌入到對方的iframe中去,在safari,opera和有些版本的搜狗瀏覽器(內(nèi)核版本原因)中不能讀到cookie。2010-06-06基于html+css+js實現(xiàn)簡易計算器代碼實例
這篇文章主要介紹了基于html+css+js實現(xiàn)簡易計算器代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02JS基于設(shè)計模式中的單例模式(Singleton)實現(xiàn)封裝對數(shù)據(jù)增刪改查功能
這篇文章主要介紹了JS基于設(shè)計模式中的單例模式(Singleton)實現(xiàn)封裝對數(shù)據(jù)增刪改查功能.結(jié)合實例形式分析了javascript基于單例模式結(jié)合ajax針對數(shù)據(jù)庫進(jìn)行增刪改查的相關(guān)操作技巧,需要的朋友可以參考下2018-02-02