2009-04-17 113 views
2

我已經創建了一個JavaScript腳本,可以粘貼在某人的頁面上來創建一個iFrame。我希望該人能夠將腳本粘貼到希望顯示iFrame的位置。如何在JavaScript中添加新元素?

但是,我不知道如何將DOM創建的iFrame追加到腳本已粘貼的位置。它總是將它附加到身體的最底部。

我該如何追加?

回答

11

mm。您可能做:

document.write("<div id='iframecontainer'></div>"); 
document.getElementById('iframecontainer').innerHTML = '...'; 

但是,這感覺難看/錯在很多不同層次的。不過,我不知道有其他的選擇。

編輯:其實,一個快速谷歌搜索發現this artlcle,其中討論了爲什麼document.write是醜陋和你所在的特定鹹菜一個不錯的選擇:給你script標籤的ID!

<script id="iframeinserter" src=".."></script> 

然後你就可以得到腳本標籤的參考,並插入之前的iframe:

var newcontent = document.createElement('iframe'); 
var scr = document.getElementById('iframeinserter'); 
scr.parentNode.insertBefore(newcontent, scr); 
+1

我喜歡你的解決方案。 :) – 2009-04-17 01:37:49

+0

編輯是一個很好的解決方案。 – iamdash 2014-08-21 14:10:45

1

如果用戶可以給一個元素的ID,這將是iframe的位置應該是,那麼就可以使用css將iframe移動到頁面上的位置。

2

Paulo的答案也可以在沒有ID的情況下完成,只需查找最後一個< script>元素即可。這必須是腳本塊我們在,因爲JavaScript的保證所有的內容執行當前腳本塊的結束標記還未被解析(*):

var scripts= document.getElementsByTagName('script'); 
var script= scripts[scripts.length-1]; 
script.parentNode.insertBefore(d, script); 

這可以被放在一個onload /就緒函數如果你喜歡,但如果是這樣的話,'var script'必須在包含時計算,而不是在ready函數中(當執行時,更多<腳本將被解析)。

(*:除了在<腳本延遲的情況下>)