当前位置: 首页 > news >正文

html5中的iframe

HTML5中的iframe

浏览上下文是浏览器展示文档的环境,通常是一个tab标签页,一个窗体或者是浏览器页面的一部分。每个浏览上下文都有一个活动文档的源和一个记录所有展示文档的有序历史。浏览上下文的通讯被严格限制,只有两个同源的浏览器上下文,才能打开和使用通讯接口。
<iframe>表示嵌套的浏览上下文,能够将一个html页面嵌入到当前页面中
每个嵌入的浏览上下文,都有自己的会话历史记录和dom树,包含 嵌入内容的成为父级浏览上下文,顶级浏览上下文通常是由window对象表示的浏览器窗口

iframe应用

在iframe标签中放入某个网站的地址,就可以在网页中嵌入该网页,但是有的网站会拒绝连接请求。这种情况下会涉及到跨域问题

同源策略

如果两个url具有相同的协议,域和端口,则称他们是同源的。
如果是同源的,就具有对该窗口的全部访问权限。如果不是同源的,就不能访问窗口中的内容,变量,文档,除了location: 可以修改这里面的值,使用它进行重定向,但是无法读取location。
同源策略会限制窗口和frame之间的通信。

iframe跨域

iframe标签有自己的document和window,iframe.contentWindow来获取window,iframe.contentDocument来获取document,是iframe.contentWindow.document的简写。当访问嵌入的iframe窗口,浏览器会检查iframe中是否具有相同的源。如果不是,则会拒绝访问。对location进行写入是一个例外,这个是被允许的。

iframe.onload

在创建 iframe 后,iframe 会立即就拥有了一个文档。但是该文档不同于加载到其中的文档!因此,如果我们要立即对文档进行操作,就可能出问题,因为那是错误的文档。正确的文档在 iframe.onload 触发时肯定就位了。但是,只有在整个 iframe 和它所有资源都加载完成时,iframe.onload 才会触发。
iframe标签上的iframe.onload和在嵌入的window对象上的iframe.contentWindow.onload上基本相同,当嵌入的所有资源都完全加载的时候出发,但是用嵌入对象的api,无法访问不同源的iframe。

window.frames

获取iframe的window对象的方式是从命令集合window.frames中获取。

  • 通过索引获取: window.frames[0]。 文档中的第一个iframe的window对象
  • 通过名称获取: window.frames.iframeName – 获取name=‘iframeName’ – 获取name='iframeName’的iframe的window对象。

sandbox

sandbox特性允许在iframe中禁止某些特定行为,防止执行不被信任的代码,将iframe视为非同源的,或者应用其他限制来实现iframe的沙盒化。
可以通过sandbox=“”,将放宽的限制写入,来达到放宽的目的。

iframe通信

postMessage

想要发送消息的窗口需要调用接受窗口的postmessage方法

  • data:要发送的数据
  • targetOrgin: 指定目标窗口的源,以便只有来自给定窗口的源的窗口才能获得到该消息。
onmessage

为了接受消息,目标窗口在message事件上有一个处理程序,当postmessage被调用出发该事件的时候。

  • data: 从postmessage传递过来的数据
  • origin发送方的源
  • source对发送方窗口的引用,可以调用source.postmessage的方法
    要为message事件分配事件处理程序,应该使用addEventListener方法

跨域问题的解决

domian修改文档域

如果两个页面只是子域不同,可以设置相同的document.domain来绕过同源策略的限制,这种方法只使用于协议和端口都相同的情况。

postmessage

window.postMessage方法允许来自不同源的脚本进行安全通信。你可以通过这个方法在iframe和其父页面(或任何窗口)之间发送消息

实例代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1>这个是一个父页面</h1><iframe id="a" src="./b.html" frameborder="1" height="600" width="600"></iframe><p>父页面</p><script>window.onload = function() {var iframe = document.getElementById('a')iframe.onload = function() {console.log("iframe加载已经完成")iframe.contentWindow.postMessage('hello from a','b.html')}}window.onmessage=function(event) {if(event.origin !== 'http://domain.com') {return}console.log('从子页面收到的消息', event.data)}</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h2>子页面</h2><p>iframe传入父页面中</p><script>window.onmessage = function(event) {if(event.origin !== 'http://a.com') {return}console.log('从父组件收到的消息', event.onload)event.source.postMessage('hello back from child',event.origin)}</script>
</body>
</html>

相关文章:

html5中的iframe

HTML5中的iframe 浏览上下文是浏览器展示文档的环境&#xff0c;通常是一个tab标签页&#xff0c;一个窗体或者是浏览器页面的一部分。每个浏览上下文都有一个活动文档的源和一个记录所有展示文档的有序历史。浏览上下文的通讯被严格限制&#xff0c;只有两个同源的浏览器上下…...

海睿思问数(TableGPT):开创企业新一代指标应用模式

1 指标建设对企业经营管理数字化的价值分析 指标是将海量数据中关键信息提炼和挖掘出来&#xff0c;以数据为载体展示企业经营管理和分析中的统计量。它通过分析数据&#xff0c;形成一个具有度量值的汇总结果&#xff0c;使得业务状态可以被描述、量化和分解。指标通常由度量…...

LM-Cocktail:一种创新的模型合并方法打破预训练语言模型微调后的性能局限,实现语言模型在一般任务与特定领域的均衡高性能

LM-Cocktail:一种创新的模型合并方法打破预训练语言模型微调后的性能局限,实现语言模型在一般任务与特定领域的均衡高性能 使语言模型的微调类似于调制一杯精致的鸡尾酒。模型合并可用于提高单个模型的性能。我们发现此方法对于大型语言模型和密集嵌入模型也很有用,并设计了…...

默认导出(default)和命名导出

1.默认导出 优点&#xff1a; 简洁的导入语法&#xff1a; 导入时不需要使用花括号&#xff0c;可以直接重命名。单一职责&#xff1a; 模块导出一个主要功能或对象时&#xff0c;默认导出更符合逻辑。 适用场景&#xff1a; 模块只有一个导出&#xff1a; 如一个组件、一个…...

开发个人Go-ChatGPT--1 项目介绍

开发个人Go-ChatGPT--1 项目介绍 开发个人Go-ChatGPT--1 项目介绍知识点大纲文章目录项目地址 开发个人Go-ChatGPT–1 项目介绍 本文将以一个使用Ollama部署的ChatGPT为背景&#xff0c;主要还是介绍和学习使用 go-zero 框架&#xff0c;开发个人Go-ChatGPT的服务器后端&#…...

皮卡超级壁纸 | 幸运壁纸幸运壁纸app是一款涵盖了热门影视剧、动漫、风景等等资源的装饰工具,

软件下载链接&#xff1a;壁纸下载方式在链接中文章底部 皮卡超级壁纸 皮卡超级壁纸是一款专为手机用户设计的壁纸应用&#xff0c;它提供了丰富多样的高清壁纸资源&#xff0c;让用户的手机界面焕然一新。这款应用以其海量的壁纸库和用户友好的操作界面&#xff0c;在市场上…...

普通集群与镜像集群配置

目录 一. 环境准备 二. 开始配置集群 三. RabbitMQ镜像集群配置 四. 安装并配置负载均衡器HA 一. 环境准备 关闭防火墙和selinux&#xff0c;进行时间同步 主机名系统IP服务rabbitmq-1 Rocky_linux9.4 192.168.226.22RabbitMQ&#xff0c;MySQLrabbitmq-2Rocky_linux9.41…...

2024科技文化节程序设计竞赛

补题链接 https://www.luogu.com.cn/contest/178895#problems A. 签到题 忽略掉大小为1的环&#xff0c;答案是剩下环的大小和减环的数量 #include<bits/stdc.h> #include<iostream> #include<cstdio> #include<vector> #include<map> #incl…...

玩转Easysearch语法

Elasticsearch 是一个基于Apache Lucene的开源分布式搜索和分析引擎&#xff0c;广泛应用于全文搜索、结构化搜索、分析等多种场景。 Easysearch 作为Elasticsearch 的国产化替代方案&#xff0c;不仅保持了与原生Elasticsearch 的高度兼容性&#xff0c;还在功能、性能、稳定性…...

【密码学】RSA公钥加密算法

文章目录 RSA定义RSA加密与解密加密解密 生成密钥对一个例子密钥对生成加密解密 对RSA的攻击通过密文来求得明文通过暴力破解来找出D通过E和N求出D对N进行质因数分解通过推测p和q进行攻击 中间人攻击 一些思考公钥密码比对称密码的机密性更高&#xff1f;对称密码会消失&#x…...

【ARMv8/v9 GIC 系列 5.1 -- GIC GICD_CTRL Enable 1 of N Wakeup Function】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC Enable 1 of N Wakeup Function基本原理工作机制配置方式应用场景小结GIC Enable 1 of N Wakeup Function 在ARM GICv3(Generic Interrupt Controller第三代)规范中,引入了一个名为"Enable 1 of N Wakeup"的功能。…...

C++怎么解决不支持字符串枚举?

首先&#xff0c;有两种方法&#xff1a;使用命名空间和字符串常量与使用 enum class 和辅助函数。 表格直观展示 特性使用命名空间和字符串常量使用 enum class 和辅助函数类型安全性低 - 编译器无法检查字符串有效性&#xff0c;运行时发现错误高 - 编译期类型检查&#xf…...

中英双语介绍四大会计师事务所(Big Four accounting firms)

中文版 “四大会计师事务所”&#xff08;Big Four accounting firms&#xff09;是全球最具影响力和规模最大的四家专业服务公司&#xff0c;它们在审计、税务、咨询和财务咨询等领域占据着主导地位。这四家公司分别是普华永道&#xff08;PwC&#xff09;、德勤&#xff08;…...

ubuntu 查看联网配置

在Ubuntu中&#xff0c;你可以使用多种命令来查看联网配置。以下是一些常用的方法和命令&#xff1a; 查看网络接口配置&#xff1a; 使用 ip 命令可以查看网络接口的配置信息&#xff0c;包括IP地址、子网掩码等。 ip addr show或者&#xff0c;你也可以使用传统的 ifconfig 命…...

【数据分享】全国乡村旅游重点镇(乡)数据(Excel/Shp格式/免费获取)

之前我们分享过从我国文化和旅游部官网整理的2018-2023年我国50个重点旅游城市星级饭店季度经营状况数据&#xff08;可查看之前发布的文章&#xff09;&#xff01;文化和旅游部官网上也分享有很多与旅游相关的常用数据&#xff0c;我们基于官网发布的名单文件整理得到全国乡村…...

停车场小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;车主管理&#xff0c;商家管理&#xff0c;停车场信息管理&#xff0c;预约停车管理&#xff0c;商场收费管理&#xff0c;留言板管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;停车场信息…...

绿色金融相关数据合集(2007-2024年 具体看数据类型)

数据类型&#xff1a; 1.绿色债券数据&#xff1a;2014-2023 2.绿色信贷相关数据&#xff1a;2007-2022 3.全国各省及地级市绿色金融指数&#xff1a;1990-2022 4.碳排放权交易明细数据&#xff1a;2013-2024 5.绿色金融试点DID数据&#xff1a;2010-2023 数据来源&#…...

【matlab 项目工期优化】基于NSGA2/3的项目工期多目标优化(时间-成本-质量-安全)

一 背景介绍 本文分享了一个通用的项目工期优化的案例&#xff0c;决策变量是每个子项目的工期&#xff0c;优化目标是项目的完成时间最小&#xff0c;项目的总成本现值最小&#xff0c;项目的总安全水平最高&#xff0c;项目的总质量水平最高。采用的算法是NSGA2和NSGA3算法。…...

Python考前复习

选择题易错&#xff1a; python3不能完全兼容python2内置函数是python的内置对象之一&#xff0c;无需导入其他模块python中汉字变量合法&#xff0c;如“小李123”合法&#xff1b;但T-C不合法&#xff0c;因为有“-”集合无顺序&#xff0c;不能索引&#xff1b;range(5)[2]…...

虚拟机交叉编译基于ARM平台的opencv(ffmpeg/x264)

背景&#xff1a; 由于手上有一块rk3568的开发板&#xff0c;需要运行yolov5跑深度学习模型&#xff0c;但是原有的opencv不能对x264格式的视频进行解码&#xff0c;这里就需要将ffmpegx264编译进opencv。 但是开发板算力有限&#xff0c;所以这里采用在windows下&#xff0c;安…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...