`

iframe加载技术和性能

阅读更多

1. 普通的Iframe

 

代码:
<iframe src=”/path/to/file” frameborder=”0″ width=”728″ height=”90″ scrolling=”auto”> </iframe>

- iframe 在主页面之前加载
- iframe 要等所有内容下载完,才开始启动
- 主页面在iframe全部完成后,才开始加载。阻塞!阻塞!!
- 当iframe加载的时候,页面一直显示繁忙指示器。

 

2. iframe在主页面之后加载

代码:
<script> 
//doesn’t block the load event 
function createIframe(){ 
var i = document.createElement(“iframe”); 
i.src = “path/to/file”; 
i.scrolling = “auto”; 
i.frameborder = “0″; 
i.width = “200px”; 
i.height = “100px”; 
document.getElementById(“div-that-holds-the-iframe”).appendChild(i); 
};

// Check for browser support of event handling capability 
if (window.addEventListener) 
window.addEventListener(“load”, createIframe, false); 
else if (window.attachEvent) 
window.attachEvent(“onload”, createIframe); 
else window.onload = createIframe;

</script>

- iframe 在主页面完成加载后,才开始加载
- 主页面加载的时候,没有被iframe干扰
- 繁忙指示器依然存在。这是不好的地方。

 

3. 使用iframe setTimeout() 方法

因为对IE8无效,实际应用意义不大,在此略去

 

4. 采用动态异步调用iframe

 

代码:
<script> 
(function(d){ 
var iframe = d.body.appendChild(d.createElement(‘iframe’)), 
doc = iframe.contentWindow.document;

// style the iframe with some CSS 
iframe.style.cssText = “position:absolute;width:200px;height:100px;left:0px;”;

doc.open().write(‘<body onload=”‘ + 
‘var d = document;d.getElementsByTagName(\’head\’)[0].’ + 
‘appendChild(d.createElement(\’script\’)).src’ + 
‘=\’\/path\/to\/file\’”>’);

doc.close(); //iframe onload event happens

})(document); 
</script>

 

效果:
- iframe 在主页面之前开始加载
- iframe 在iframe的内容下载完就开始启动
- 主页面加载不受iframe影响
- 当iframe加载时,繁忙指示器消失了!

 

结论:

1. 因为iframe耗用比较多资源,做优化处理的时候又比较麻烦,尽量别采用。

2. 如果一定要用,推荐采用动态异步调用。无论是主页面加载时间,还是繁忙指示器的用户体验都有较好提升。

 

翻译自:Aaron Peters的博客

分享到:
评论

相关推荐

    iframe 异步加载技术及性能分析

    1. **阻塞主页面的`onload`事件**:当`iframe`的内容加载完成,才会触发主页面的`onload`事件,这对页面性能和用户体验都有负面影响,尤其是考虑到谷歌对网站加载速度的评分。 2. **共享连接池**:主页面和`iframe`...

    asp.net 中使用iframe动态加载页面

    ASP.NET 中使用 iframe 动态加载页面 ASP.NET 中使用 iframe 动态加载页面是指在 ASP.NET 应用程序中使用 iframe ...因此,在使用 iframe动态加载页面时,需要注意安全性和性能问题,合理设计和实现 iframe 的使用。

    easyui iframe 页面重复加载的问题

    在使用easyui框架开发Web应用时,特别是在使用tab布局的时候,开发者可能会遇到页面内容被放置在iframe中时,页面多次加载的问题。...在实际开发中,应合理运用这一技术细节,以达到更好的用户交互体验和系统性能。

    iframe(图片过渡效果欣赏)

    4. **图片懒加载**:为了提高页面加载速度,可以使用`iframe`配合懒加载技术,使得图片只在进入视口时才开始加载。 5. **跨域问题**:由于同源策略的限制,`iframe`加载的页面必须与主页面在同一域名下,除非目标...

    通过JavaScript+IFRAME实现页面分屏加载

    **JavaScript + IFRAME 实现页面分屏加载...通过JavaScript和IFRAME实现的分屏加载是一种实用的技术,它能帮助开发者优化网页加载速度,提高用户体验。在实际应用中,需要根据项目需求进行调整和优化,以达到最佳效果。

    关于iframe的用法

    - **性能影响**:iframe加载可能会增加页面的整体加载时间。优化图片和其他资源,以及使用懒加载技术可以缓解这个问题。 - **跨域问题**:由于同源策略,iframe加载的页面必须与包含它的页面在同一域名下,除非...

    使用iframe在网页中嵌入其他网页的方法

    此外,`iframe`的使用也可能会对网页的性能和SEO产生影响,因为它们可能会导致额外的HTTP请求,并且搜索引擎可能不会完全抓取`iframe`内的内容。 总结来说,`iframe`是一个强大的网页设计元素,它可以方便地将其他...

    div+css代替iframe框架并带全屏遮罩加载特效

    然而,随着Web技术的发展,`div+css`布局方式因其灵活性和高效性逐渐成为主流,许多开发者开始寻找用`div+css`替代`iframe`的方法。本文将详细介绍如何使用`div+css`构建框架,并实现全屏遮罩加载特效。 首先,理解...

    html5整合iframe和Bootstrap

    例如,通过监听`load`事件,可以在iframe加载完成时执行动画效果或更新页面其他部分的状态。 在实际应用中,一个常见的场景可能是使用iframe来展示第三方内容,如地图服务、视频播放器或者社交媒体插件,同时利用...

    html 网页加载

    在探讨HTML网页加载中的`...然而,在实际应用中也需要考虑到一系列的技术挑战,如兼容性、性能优化、安全性和响应式设计等问题。开发者需要根据具体需求合理选择和配置`&lt;iframe&gt;`的各项属性,以实现最佳的用户体验。

    Extjs6-iframe-优化.rar

    5. **优化性能**:通过这种方式,可以减少不必要的IFrame加载时间,节省网络带宽,同时减少了可能导致的浏览器崩溃风险。 6. **增强可维护性**:优化后的代码结构可能会更加清晰,便于后期的调试和维护,因为错误...

    iframe框架后台模板

    例如,添加新的功能模块,修改zTree的节点数据以匹配系统菜单,或者调整iframe的加载逻辑以优化性能。同时,为了保证系统的安全性,还需要注意iframe之间的跨域问题,防止XSS攻击,并合理设置iframe的sandbox属性。 ...

    Laya和iframe通信.zip

    当iframe加载新的URL时,`window.name`的值不会改变,所以可以作为跨域存储信息的媒介。Laya可以在加载iframe后设置`name`,然后在iframe内部读取这个值。 除此之外,还可以利用URL查询参数、存储机制(如...

    Default(iframe).rar(iframe的简单使用)

    同时,合理使用缓存和异步加载技术能提升用户体验。 综上所述,`Default(iframe).rar`压缩包提供的实例展示了如何在.NET环境中利用`iframe`进行页面构建和动态内容加载。通过学习和实践这些文件,开发者可以更好地...

    实现iframe嵌套,适合CMS,CRM等后台框架

    考虑使用懒加载技术,只有当用户滚动到特定位置时才加载iframe内容。 4. **响应式设计**:确保iframe在不同设备和屏幕尺寸下能正确显示。可以使用CSS媒体查询来调整iframe的尺寸。 5. **权限控制**:在CMS或CRM...

    用DIV仿iframe框架布局效果

    使用异步加载和懒加载技术,只在需要时加载内容。 综上所述,用DIV仿iframe框架布局效果,主要涉及CSS布局、JavaScript动态加载、跨域通信、SEO优化以及响应式设计等多个方面。通过巧妙地组合这些技术,我们可以...

    java iframe应用 jsp j2ee

    // IFrame加载完成后执行的回调函数 }); $.ajax({ url: "${pageContext.request.contextPath}/iframeContent", type: "GET", success: function(response) { $("#iframeId").contents().find("html").html...

    IFrame开发参考文档docs

    可以考虑使用懒加载(lazy loading)技术,只有当IFrame进入视口时才开始加载。 5. **用户体验**:合理使用IFrame可以提升用户体验,但过度使用可能会导致页面结构复杂,影响加载速度。需要权衡使用IFrame的利弊,...

    IFrame简单例子

    2. **页面加载性能**:IFrame可以让部分页面异步加载,提高用户体验。 3. **嵌入内容**:可以方便地嵌入其他网站的内容,如地图、视频等。 4. **分离样式和脚本**:在复杂应用中,IFrame可以隔离样式和脚本,避免...

Global site tag (gtag.js) - Google Analytics