深入理解iframe

摘要:本文并不是一篇iframe API文档讲解,因此想了解iframe API的同学请移步 MDN,本文主要从浅入深的来与大家探讨iframe中的一些特性、各种现代浏览器中的渲染模式、应用场景、以及在现代开发中的影响。

一、什么是iframe

在HTML中有三种结构特征:树结构、层次结构、框结构。iframe正是框结构中的一员。每个iframe中都是一个独立的沙箱,它们拥有自己的window以及DOM。
iframe是HTML三种结构中的框结构,每一个框结构都有一个独立的HTML文档。
复杂的框结构即多个框结构复合在一个页面中, 其示图如下:
在这里插入图片描述

二、iframe无阻塞加载

在使用iframe时只有Chrome不会阻塞主页面渲染,但是在实际应用中还是要考虑到iframe阻塞主页渲染的情况。常用的解决思路有两种:1、直接使用setTimeout异步加载iframe;2. 在页面触发onload之后加载iframe。

// setTimeout 形式(提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval())
setTimeout(function() {
	var a = '<iframe id="sendjingdongifr" src="//www.baidu.com"></iframe>';
	$("#sendhidediv").html(a);
}, 400);

这种方式十分简洁, 但是需要注意的是, 如果你需要在页面onload后执行某些操作的时候, 需要在 setTimeout 回调中去绑定load函数。

window.addEventListener('load', function() {
	var a = '<iframe id="sendjingdongifr" src="//www.baidu.com"></iframe>';
	$("#sendhidediv").html(a);
});

这种方式也是简单粗暴,而且没有setTimeout方式灵活(不建议使用), 没办法准确到iframe加载完后, 在主页面做一些操作。

三、Chrome使用iframe实现跨域

跨域是我们开发过程中经常遇到的问题,而如何解决跨域的问题, 网络上已经有非常多可行的方案, 至于最终选择何种方案去处理, 还得结合实际业务场景选择最合适的方案。

本文只讲述Chrome插件结合iframe解决跨域的问题:
在Chrome插件开发过程中,经常会遇到页面内包含iframe框架的情况,这个时候如果框架和顶层页面不同源,content_script是无法访问框架的内容的,这收到js跨域的限制. 解决方法其实很简单.就是在manifest.json文件中修改你的content_script字段,加入以下内容:

	"all_frames": true

参考:
深入理解iframe
在HTML5中有什么可以替代iFrame添加链接描述
把content_script注入iframe框架使其在框架内生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
☆系统前台简介☆ 1.申请加入免收录网站友情链接网的网站按最后点进的时间排序首页和分类显示链接, 分类以昨日点入时间为准,每晚十二点后生成静态。 2.每来访一个IP,就会自动排到第一(刷新一下),当天来路不同次数,显示颜色也不同:有1次即显示,10次即套蓝色,30次即套红色加粗 3.首页白天3分钟,晚上5分钟自动更新一次,全站24小时手动更新一次。 4.站内搜索功能。 5.网址库中分离出的【名站导航】【实用工具】【友情链接】 ☆系统后台功能☆ 1.设置网站的基本信息。 2.管理员帐号/密码更改。 3.添加删除分类。 4.分类可修改可设置首页是否显示。 5.酷站可设置首页是否显示。 6.添加删除修改网址内容,是否推荐,是否审核。 7.可从网址库中分离出【名站导航】【实用工具】【友情链接】 8.【名站导航】【实用工具】可由快速通道添加。 9.【友情链接】从网址列表中设置。 10.站内搜索功能。 11.生成htm分类页面,生成htm主页及其它页面。 12.可修改主页,分类及其它页面模板。 13.具有数据库【备份】【压缩】【恢复】功能。 14.后台广告位标注 ☆安装使用方法☆ 1.在支持ASP的服务器上解开本软件包。 2.数据库文件在data目录,已经做了防下载处理。 3.后台登录地址在admin/index.asp,默认管理员账号:admin,密码:admin。 4.进入后台根据提示设置你网站的基本信息。 5.生成全站及分类一次。 6.为了安全起见,请在后台将管理员帐号和密码全部修改成你自己的。 后续版本不断更新中......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值