2010-06-18 65 views
17

后使用JavaScript我需要找到添加一个iframe元素是最好的办法:的Javascript:添加iframe元素页面加载

  1. 从用户完全隐藏。
  2. 页面完全加载后创建。即对用户应该是完全不显眼的,并且不以任何方式影响图像和其他脚本等的加载。

回答

47

您可以添加一个隐藏的iframe这样的:

var iframe = document.createElement('iframe'); 
iframe.style.display = "none"; 
iframe.src = /* your URL here */; 
document.body.appendChild(iframe); 

如果你需要做的是在页面加载,你可以简单地把相关代码的脚本标签在你的文档的末尾,或者通过windowload事件(window.onload = yourFunction;)将其挂起,尽管在页面加载过程中发生的事件相当晚。当然,就像浏览器上涉及JavaScript的许多事情一样,如果使用类似Prototype,jQuery,Closureany of several others这样的库,可能会发现您的生活会更轻松,因为这些功能可以消除浏览器差异。 (也就是说,上面的代码可以在我熟悉的任何浏览器上运行。)一旦页面加载完成,库通常会提供一种处理方式,但通常会比windowload更早发生。 jQuery提供了ready函数; Prototype提供dom:loaded事件;等

举例来说,如果你把这个在你body标签的结束,它会创建其他加载后一切的iframe(包括所有图片,windowload不火,直到所有图像都加载) :

<script type='text/javascript'> 
window.onload = function() { 
    var iframe = document.createElement('iframe'); 
    iframe.style.display = "none"; 
    iframe.src = /* your URL here */; 
    document.body.appendChild(iframe); 
}; 
</script> 
+0

我需要做“页面加载后...”,我不想以任何方式呈现的iframe内容影响网站的加载。 – EddyR 2010-06-18 13:39:13

+0

@EddyR:这就是为什么你把脚本标签放在文档的最后。但是如果你想确保完全避开图像加载的方式,请在'window.onload'中执行。该事件发生在*所有其他事情都完成加载后,包括所有图像。我已经更新了一个例子。 – 2010-06-18 13:40:38

+0

好的...呃。 thx – EddyR 2010-06-18 13:45:43