iframe的优缺点、使用

1、iframe的优缺点有哪些

iframe是HTML中的一个标签,可以在网页中嵌入另一个独立的HTML文档。它的优缺点如下:

 优点:  

       1.代码模块化:使用iframe可以将一个网页划分为多个模块,每个模块单独编写HTML文档,使代码更加模块化和易于维护。

  2.跨域通信:由于浏览器的同源策略,一个网页无法直接访问另一个域名下的内容。但是,使用iframe可以在同一个页面中加载不同域名下的内容,从而实现跨域通信。

独立性:iframe中的文档是独立的,它的样式和JavaScript代码不会影响到外层文档的样式和JavaScript代码。

  缺点:

  1. 降低性能:每个iframe都需要单独加载和渲染,这会导致网页的加载速度变慢,降低性能。iframe会阻塞主页面的Onload事件

  2. SEO问题:iframe中的内容不会被搜索引擎抓取和索引,这会对网页的SEO产生影响。

  3. 安全问题:iframe中的文档可以在外层文档中执行脚本,这可能导致安全问题。

       4. 很多的移动设备(PDA手机)无法完全显示框架,设备兼容性差。

       5. 浏览器的后退按钮无效(只能针对实现当前光标所在页面的前进与后退,无法实现frameset整个页面的前进与后退)

2. iframe的一些属性


.frameborder:是否显示边框,1(yes),0(no)
.height:框架作为一个普通元素的高度,建议在使用css设置。
width:框架作为一个普通元素的宽度,建议使用css设置。
name:框架的名称,window.frames[name]时专用的属性。
.scrolling:框架的是否滚动。yes,no,auto。
.src:内框架的地址,可以使页面地址,也可以是图片的地址。

3. postmessage

该方法挂载到window对象上,即使用window.postmessage()调用,

接受两个数:postMessage(message, targetOrigin):
message: string, 传对象需要JSON.stringify

targetOrigin: 接受你传递消息的域名,可以设置绝对路径,也可以设置"“或者”/"。 表示任意域名都行,"/"表示只能传递给同域域名。

发送消息: 使用postmessage方法
接受消息: 监听message事件

<iframe src="http://tuhao.com" name="sendMessage"></iframe>
//当前脚本
let ifr = window.frames['sendMessage'];
   //使用iframe的window向iframe发送message。
ifr.postmessage('give u a message', "http://tuhao.com");
//tuhao.com的脚本
window.addEventListener('message', receiver, false);
function receiver(e) {
    if (e.origin == 'http://tuhao.com') {
        if (e.data == 'give u a message') {
            e.source.postMessage('received', e.origin);  //向原网页返回信息
        } else {
            alert(e.data);
        }
    }
}

4. 获取iframe里的内容

var iframe = document.getElementById("iframe1");
var iwindow = iframe.contentWindow; //获取iframe的window对象
var idoc = iwindow.document; //获取iframe的document

console.log("html",idoc.documentElement);//获取iframe的html
console.log("head",idoc.head); //获取head
console.log("body",idoc.body); //获取body

结合Name属性,通过window提供的frames获取.

<iframe src ="/index.html" id="ifr1" name="ifr1" scrolling="yes">
   <p>Your browser does not support iframes.</p>
</iframe>

<script type="text/javascript">
console.log(window.frames['ifr1'].window);
console.dir(document.getElementById("ifr1").contentWindow);
</script>

在iframe中获取父级内容
window.parent 获取上一级的window对象,如果还是iframe则是该iframe的window对象
window.top 获取最顶级容器的window对象,即,就是你打开页面的文档
window.self 返回自身window的引用。可以理解 window===window.self
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `<iframe>` 框架有一些优点和缺点,下面是一些常见的优缺点: 优点: 1. 分离内容:使用 `<iframe>` 可以将页面内容分离出来,使得不同部分的内容可以独立加载和管理。这对于复杂的网站或应用程序来说非常有用,可以提高代码的可维护性和重用性。 2. 并行加载:通过使用 `<iframe>`,可以同时加载多个页面。这对于提高页面加载性能和用户体验很有帮助,特别是在加载较大的内容时。 3. 安全性:使用 `<iframe>` 可以将第三方内容嵌入到页面中,并通过浏览器的安全策略进行隔离。这样可以减少恶意代码对页面的影响,提高安全性。 缺点: 1. SEO 问题:搜索引擎通常不会对 `<iframe>` 中的内容进行索引,这可能会影响到网站的搜索引擎优化(SEO)。如果网站依赖于搜索引擎流量,这可能是一个重要的考虑因素。 2. 用户体验问题:使用 `<iframe>` 可能会导致一些用户体验问题,如页面滚动、交互等方面的限制。此外,如果 `<iframe>` 中的内容加载速度较慢,用户可能会感到不满。 3. 跨域限制:由于浏览器的同源策略限制,使用 `<iframe>` 加载来自其他域的内容可能会受到跨域限制。这需要进行相关的跨域设置或使用其他解决方案。 综上所述,使用 `<iframe>` 框架具有一些优点和缺点,应根据具体场景和需求来权衡使用。在设计和开发过程中,需要综合考虑这些因素来确定是否使用 `<iframe>`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值