2009-04-17 67 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函数中(当执行时,更多<脚本将被解析)。

(*:除了在<脚本延迟的情况下>)