iframe的基本介绍与使用

news/2024/11/23 22:55:56/

一、介绍

iframe(内嵌框架)是 HTML 中一种用于将一个网页嵌入到另一个网页中的标签,它可以在一个页面中显示来自其他页面的内容。在网页中,使用<iframe>标签可以将一个网页嵌套在另一个网页中,实现网页间的互联互通。

二、使用

<iframe>标签的基本用法如下:

<iframe src="URL"></iframe>

三、属性 

属性描述
allow允许特定功能的列表,如fullscreen,geolocation等
allowfullscreen指定是否允许在iframe中使用全屏模式
allowpaymentrequest指定是否允许在iframe中进行支付请求
allowtransparency指定iframe是否可以是透明的
class为iframe定义一个或多个类名
frameborder指定是否在iframe周围显示边框
height指定iframe的高度
importance指定iframe对页面内容的重要性
loading指定iframe加载时的行为
name为iframe定义一个名称
referrerpolicy指定如何发送referer HTTP标头
sandbox启用iframe的沙盒模式,提高安全性
src指定要在iframe中显示的文档的URL
srcdoc在iframe中嵌入HTML代码而不是外部文档
style定义iframe的CSS样式
title为iframe定义一个标题
width指定iframe的宽度

四、注意

虽然 <iframe> 标签可以很方便地实现上述功能,但是需要注意以下几点:

  • 嵌入的网页必须与主页面同源,否则会受到浏览器的安全限制。
  • 嵌入的网页可能会影响页面性能和加载速度,特别是当嵌入的网页包含大量的资源(如图片、CSS 和 JavaScript)时。
  • 嵌入的网页可能会被恶意攻击者用于钓鱼或注入恶意代码的攻击,因此需要谨慎使用。

总之,在使用 <iframe> 标签时,需要仔细权衡其优缺点,确保安全和性能。

五、传值

5.1 URL传参

 可以在iframe的src属性中使用查询参数(也称为URL参数)将数据传递到嵌入的页面。例如,假设iframe嵌入的页面URL是 index.com/page.html,那么可以使用如下的URL来传递数据:

<iframe src="index.com/page.html?param1=value1&param2=value2"></iframe>

  在嵌入的页面中,可以使用JavaScript获取查询参数并使用它们: 

var params = new URLSearchParams(window.location.search);
var param1 = params.get('param1');
var param2 = params.get('param2');

 或者写一个函数获取对应的值(该方法来自拓维的一位前端工程师大佬):

//从url获取参数
export const getQuery = (name: string, url?: string) => {const params = new URLSearchParams(url || window.location.search);const value = params.get(name);if (value) {return value;}return getQueryString(name, url);
};export const getQueryString = (name: string, url?: string) => {const reg = new RegExp('(^|&|/?)' + name + '=([^&]*)(&|$)', 'i');const r = encodeURI(url || window.location.search || window.location.href || window.location.hash).substr(1).match(reg);if (r != null) return unescape(r[2]);return null;
};

5.2 postMessage()传参

postMessage()方法是一种用于在不同窗口或文档之间传递消息的通用方法,它可以实现跨域通信。在使用postMessage()方法时,需要在发送消息的窗口(发送方)和接收消息的窗口(接收方)中分别编写代码。

5.2.1 子传父:

子:

// 发送消息给接收方窗口
window.parent.postMessage("Hello, parent!", "http://parent.com");

父:

// 监听message事件,接收消息
window.addEventListener("message", receiveMessage, false);function receiveMessage(event) {// 判断消息来源是否是指定的发送方窗口if (event.origin === "http://child.com") {// 处理接收到的消息console.log(event.data);}
}

5.2.2 父传子:

父:

创建实例对象:

const iframe = document.getElementById('my-iframe');
const iframeWindow = iframe.contentWindow;

发送消息:

const message = { type: 'GREETINGS', data: 'Hello, child!' };
const targetOrigin = 'http://child.com'; // 指定接收方的源
iframeWindow.postMessage(message, targetOrigin);

子:

接收消息

window.addEventListener('message', receiveMessage, false);function receiveMessage(event) {if (event.origin === 'http://parent.com') { // 验证消息来源console.log(event.data); // 处理接收到的消息}
}

注意:可以将  targetOrigin 设置为“ * ” 号以匹配所有路径,但可能会有安全风险。谨慎使用。


http://www.ppmy.cn/news/37412.html

相关文章

windows安装MySQL 5.7.30

1.下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-winx64.zip 2.安装 解压&#xff1a;解压到D盘&#xff0c;改名为&#xff1a;mysql-5.7.30 设置环境变量 系统—>高级系统设置—>环境变量—>系统变量 新建 变量名&#xff1a;MYSQL_HOME 值&am…

03_2440_裸机时钟体系

总结 这里soc从外界得到外部时钟源,通过硬件的锁相环(PLL)进行加速, 加速完的内部时钟通过分频为三个时钟源 cpu_fclk ahb_hclk apb_pclk 给不同的器件进行使用 soc内部时钟源获取和分类的流程 从datasheet中的第7章,把所有器件的时钟源说明清楚 从外部的时钟源进来 到分发到…

Linux RepoSync将yum存储库同步到本地目录

当同步开始时&#xff0c;RepoSync下载存储库的索引&#xff0c;并将它们与开始时为空的当前索引进行比较&#xff0c;它为每个新的、删除的或修改的包或索引创建一个操作。它每次下载一个包以减少存储需求&#xff0c;对其进行验证&#xff0c;然后将它写入目标存储库。该过程…

【MySQL】解决字符集编码问题

文章目录前言方法1:在创建数据库时,指定字符集方法2: 更改MySQL的配置文件前言 MySQL的默认编码方式是 拉丁文,如果想要设置一些汉字的数据.可能会报错.分享一下我解决这个问题时的方法.1. 在创建数据库时,指定字符集 2.更改MySQL的配置文件. 方法1:在创建数据库时,指定字符集…

Java每日一练(20230403)

目录 1. 字母异位词分组 &#x1f31f;&#x1f31f; 2. 删除链表的倒数第 N 个结点 &#x1f31f;&#x1f31f; 3. 合并区间 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏…

第13章_约束

第13章_约束 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公司…

C++语言基础——函数(详解)

目录 函数是什么 函数的定义 主函数举例 空函数 函数的调用 语法格式 举例说明&#xff1a;计算x的n次方 递归 递归的主要点 递归的结构 条件 递归使用的场景 函数是什么 函数全名叫计算机函数&#xff0c;它可以帮助你完成一些特定的程序。你可以把它简单理解成一把…

03.时间和空间复杂度

1. 算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。时间效率被称为时间复杂度&#xff0c;而空间效率被称作 空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间&am…