新闻中心

如何用j*ascript操作iframe_如何与父页面通信?

2025-12-15
浏览次数:
返回列表
J*aScript操作iframe需先获取DOM引用,同源时用contentWindow/contentDocument直接操作,跨域时必须用postMessage通信,并校验origin确保安全。

如何用javascript操作iframe_如何与父页面通信?

J*aScript 操作 iframe 的核心在于获取 iframe 的 DOM 引用,并在满足同源策略的前提下访问其内容或触发通信。跨域时不能直接操作 document,需改用 postMessage 进行安全通信。

获取 iframe 的 DOM 引用

通过 document.getElementByIdquerySelector 获取 iframe 元素后,可用 .contentWindow.contentDocument 访问内部对象:

  • iframe.contentWindow:指向 iframe 内的 window 对象,可调用其方法(如 alert)、监听事件、访问 location
  • iframe.contentDocument:等价于 iframe.contentWindow.document,用于读写内部 DOM(仅同源)
  • 注意:iframe 必须已加载完成(监听 load 事件),否则 contentDocument 可能为 null

同源 iframe 的 DOM 操作示例

假设 iframe 与父页同域(如都在 https://example.com):

const iframe = document.getElementById('myIframe');
iframe.addEventListener('load', () => {
  const innerDoc = iframe.contentDocument;
  const h1 = innerDoc.querySelector('h1');
  h1.textContent = '标题已被父页修改';
});

也可执行脚本:iframe.contentWindow.eval('console.log("hello from parent")')(不推荐,有安全风险)

跨域 iframe 通信:postMessage

父页向子页发消息:

iframe.contentWindow.postMessage('Hello from parent', 'https://other-domain.com');

子页监听并响应:

易优cms汽车车辆租赁源码1.7.2 易优cms汽车车辆租赁源码1.7.2

由于疫情等原因大家都开始习惯了通过互联网上租车服务的信息多方面,且获取方式简便,不管是婚庆用车、旅游租车、还是短租等租车业务。越来越多租车企业都开始主动把租车业务推向给潜在需求客户,所以如何设计一个租车网站,以便在同行中脱颖而出就重要了,易优cms针对租车行业市场需求、目标客户、盈利模式等,进行策划、设计、制作,建设一个符合用户与搜索引擎需求的租车网站源码。 网站首页

易优cms汽车车辆租赁源码1.7.2 0 查看详情 易优cms汽车车辆租赁源码1.7.2
// 在 iframe 内的 JS 中
window.addEventListener('message', (e) => {
  if (e.origin !== 'https://parent-domain.com') return;
  console.log('收到:', e.data);
  e.source.postMessage('已收到', e.origin); // 回复父页
});

父页也需监听 message 事件接收子页回复,且务必校验 e.origin 防止 XSS。

父页监听 iframe 的状态变化

常用场景包括加载完成、URL 改变、错误发生:

  • load:iframe 初始加载或重新导航完成后触发
  • error:资源加载失败(如 src 404)时触发
  • 监听 URL 变化需在 iframe 内配合 history.pushState + postMessage 主动通知父页

注意:iframe.src 改变会触发 reload,但不会触发父页的 hashchangepopstate

基本上就这些。关键点是区分同源/跨域,同源直接操作 DOM,跨域只走 postMessage;始终检查加载状态和 origin 安全性。

以上就是如何用j*ascript操作iframe_如何与父页面通信?的详细内容,更多请关注其它相关文章!


# 已被  # 珠海环保关键词排名方法  # seo站长资源平台  # 仲恺网站建设费用  # 网站推广代理可以吗  # 四川做推广的网站排名  # 企业品牌营销及推广策略  # 揭阳seo数据监控  # 网站性能优化重点  # 甘南关键词推广公司排名  # 免费优化网站运营平台  # 也可  # 并在  # javascript  # 大家都  # 都在  # 多态  # 如何用  # 加载  # 如何实现  # 租车  # 跨域  # win  # ai  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: c++ dfs和bfs代码 c++深度广度优先搜索算法  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  Excel Power Pivot如何处理XML数据源 构建高级数据模型  qq音乐在线播放入口_qq音乐电脑版登录链接  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  React Router v6 教程:构建认证保护的私有路由与重定向策略  Go语言JSON解析深度指南:动态访问与结构体映射实践  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  TikTok网页版直接登录 TikTok网页端官方平台入口  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  夸克浏览器图书入口 夸克手机浏览器阅读入口  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  Win11网速慢怎么解决 Win11网络设置优化解除限速  淘宝网网页版登录入口 淘宝官方网页版快捷登录  Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性  DLsite中文平台入口 DLsite官网内容在线查看  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  J*aScript中赋值与自增运算符的复杂交互与执行机制  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  解决Flask中Quill编辑器内容提交失败及TypeError的指南  微博网页版直接访问 微博网页版账号管理快速入口  批改网学生版PC登录 批改网官网登录系统入口  HTML长属性值处理:表单action路径优化与代码规范应对  Steam官网入口直达 Steam注册及登录步骤  Django模型中自动计算可用余额的实现方法  汽车之家官方网站官网入口_汽车之家网页版直接进入  支付宝如何设置安全保护_支付宝安全设置的全面教程  Eclipse怎么运行工程_Eclipse工程运行配置说明  qq游戏手机版下载安装_qq游戏移动端入口  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  12306怎么选座位选到安静区_12306选座安静区域选择策略  海棠电脑版入口_通过电脑访问海棠官网阅读  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  在python-socketio事件处理器中安全访问Flask应用上下文  UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】  Go Martini框架:动态服务解码后的图片内容  Angular中单选按钮的正确使用与常见陷阱解析  顺丰快递查单号物流信息 顺丰快递小程序查询入口  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  Golang指针如何与map组合使用_Golang map指针组合实践  J*a实现学校排课程序_面向对象结构化项目示例  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问  最新韩小圈网页版登录入口_官网在线观看官方链接  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】 

搜索