iframe的基本介绍与使用

2023-11-02

一、介绍

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 设置为“ * ” 号以匹配所有路径,但可能会有安全风险。谨慎使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iframe的基本介绍与使用 的相关文章

  • javascript jquery 使用脚本更改脚本的src

    我有一个 JavaScript 脚本 它有一个 src 元素 这个 src 是一个 url 我想使用 javascript 更改它 一次更改为其他内容 或者动态创建它 使用 javascript jquery 动态创建脚本元素的最佳方法是什
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 如何更改自动完成中的结果过滤器?

    我不想进行字面匹配 而是想通过正则表达式选择结果 我可以覆盖自动完成的默认行为来完成此任务还是需要替代结构 有一个内置的方法可以做到这一点 只需提供一个函数source http jqueryui com demos autocomplet
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • HTML 元素的默认背景颜色是什么?白色还是透明?

    我只是被一个简单的问题困住了 想弄清楚 HTML 元素的默认背景颜色是什么 是白色的还是透明的 默认背景颜色是透明的 看这里 https developer mozilla org en docs Web CSS background co
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • 使用 AngularJS 多部分表单数据将文件上传到 Google Cloud Storage

    我正在尝试使用 AngularJS 中指定的多部分方法将图像文件上传到 Google Cloud Storagehttps cloud google com storage docs json api v1 how tos upload m
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714
  • 如何在表格列标题处垂直旋转文本

    我用过这个数据表 http www datatables net 在我的网页上 这是fiddle http jsfiddle net fxju7 2 链接我放置代码的地方 我想要 第一个数字第二个数字列应该垂直旋转 我已经做到了 但是 问题
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j
  • 强制输入数字小数位

    我想强制
  • Flowtype 属性“msg”缺失为 null 或未定义

    我发现 Flow 很难用 我明白那个Array find可以返回或未定义 因此 通过阅读以下内容 github Array find on Array 引发 https github com facebook flow issues 351
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu

随机推荐

  • 湖北 医学院

    http job hust edu cn show article htm id 25736 华中科技大学2014届医科毕业生专场招聘会 邀 请 函 尊敬的用人单位负责人 您好 感谢贵单位多年来对我校就业工作的大力支持 目前 2014届毕业
  • 【技术碎片】基于指数扩散二分搜索的重名文件重命名后缀

    目录 前言 linearSearch exponentialDiffusionBinarySearch 实现 ExponentialDiffusionBinarySearch java 运行 前言 一般我们在重命名文件时可以发现是这种结构
  • cppcheck linux安装和使用

    环境 centos7 下载cppcheck地址 官网 ccpcheck版本 cppcheck 2 6 上传到响应的目录执行编译 unzip cppcheck 2 6 zip cd cppcheck 2 6 make 代码检查命令 cppch
  • jenkins 插件安装缓慢

    两条命令解决 cd 你的Jenkins工作目录 updates sed i s http updates jenkins ci org download https mirrors tuna tsinghua edu cn jenkins
  • maskrcnn掩膜拟合效果不好是什么原因引起的,分类倒是很准确

    可能是因为训练数据中目标物体的掩膜标记不够精确或者数量不足 导致模型在预测掩膜时出现误差 或者是因为模型没有足够的参数 在处理复杂的图像时表现不佳
  • cacheput注解 用法_spring cache常用注解使用

    1 CacheConfig 主要用于配置该类中会用到的一些共用的缓存配置 示例 CacheConfig cacheNames users public interface UserService 配置了该数据访问对象中返回的内容将存储于名为
  • SpringBoot + MyBatis 结合 MVC框架设计 第1关:项目整合 - SpringBoot + MyBatis

    目录 任务描述 相关知识 使用MyBatis Spring Boot Starter进行整合SpringBoot MyBatis 使用SpringBoot MyBatis编写一个查询用户信息的接口 编程要求 测试说明 参考代码 任务描述 本
  • PCL 4PCS算法实现点云配准

    4PCS算法 一 算法原理 1 算法流程 2 参考文献 二 代码实现 1 主要参数 2 完整代码 三 结果展示 四 相关链接 一 算法原理 1 算法流程 4PCS算法是计算机图形学中一种流行的配准工具 给定两个点集 P Q P Q
  • Android系统运动传感器

    转自 https blog csdn net liang123l article details 53992197 Android平台提供了多种感应器 让你监控设备的运动 传感器的架构因传感器类型而异 重力 线性加速度 旋转矢量 重要运动
  • Windows 10 安装安卓子系统 WSA(Magisk/KernelSU)使用 WSA 工具箱安装 APK

    from https blog zhjh top archives XokySA7Rc1pkVvnxAEP5E 前提是系统为 Windows 10 22H2 10 0 19045 2311 或更高版本 尽量新 步骤 使用 WSAPatch
  • android真机和模拟器(emulator)的判断

    最近收到领导需求要判断真机和模拟器 先前项目里是有的 可能当时能用 但现在都不能用了 然后 baidu上能够找到的其实都不能用了 包括说使用cache来区分cpu架构是哈佛结构还是冯诺伊曼结构来判断的 这个其实是最不靠谱的 因为硬件结构是会
  • C语言函数大全-- p 开头的函数

    p 开头的函数 1 perror 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 pieslice 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 pow powf powl 3 1 函数说明 3 2 演示示例 3 3
  • 数据结构-冒泡排序,选择排序,插入排序,快速排序,希尔排序,堆排序

    冒泡排序 冒泡排序的思想 从头开始数据两两比较 将大的放到后面小的放到前面 经过一轮比较后就找到了该序列的最大数且将它放到了最后 再循环上述步骤找出第二大的数 第三大的数 int maoapo int a int len a为数组的首地址
  • 期货开户顺大市而逆小市

    期货的行情 有人愿意以更高的价来买入 就会涨 有人买意以更低的价格卖出 就会跌 现货市场上 一个馒头5角钱的时候 在期货市场上 如果有很多人争着买 这个馒头可能会涨到5块 或者50块 也是可能的 在这个馒头5块钱一个的时候 你感觉这个馒头太
  • ShiroFilter设计原理与实现

    Shiro提供了与Web集成的支持 其通过一个ShiroFilter入口来拦截需要安全控制的URL 然后进行相应的控制 ShiroFilter类似于如Strut2 SpringMVC这种web框架的前端控制器 其是安全控制的入口点 其负责读
  • Postgre 还原导入sql文件

    postgresql 如何导入sql文件 打开sql shell 执行如下操作 密码不显示 直接输入完成后按回车键 i C Users fulong Desktop trest3 sql 注意路径不要使用 不支持这种写法
  • Linux Kernel SMP (Symmetric Multi-Processors) 開機流程解析 Part(3) Linux 多核心啟動流程從rest_init到kernel_init與CPU

    http loda hala01 com 2011 08 android E7 AD 86 E8 A8 98 linux kernel smp symmetric multi processors E9 96 8B E6 A9 9F E6
  • Java-IO流篇-DataOutputStream

    DataOutputStream DataOutputStreams是OutputStream的子类 是数据输出流 此类继承自FillterOutputStream类 同时实现DataOutput接口 在DataOutput接口定义了一系列
  • 更新k8s证书(续签)

    下载 kubeadm x86 md5 7951a9348655b4f508b84ced66fcf371kubeadm arm md5 b11c4ce93722b07f96c2acdeaaa07e74 cd etc kubernetes cp
  • iframe的基本介绍与使用

    一 介绍 iframe 内嵌框架 是 HTML 中一种用于将一个网页嵌入到另一个网页中的标签 它可以在一个页面中显示来自其他页面的内容 在网页中 使用标签可以将一个网页嵌套在另一个网页中 实现网页间的互联互通 二 使用 标签的基本用法如下