位置: IT常识 - 正文

修改iframe内部元素的样式(iframe更改自身src)

编辑:rootadmin
修改iframe内部元素的样式 HTMLIFrameElement.contentDocument

推荐整理分享修改iframe内部元素的样式(iframe更改自身src),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:修改iframe的src,如何在iframe的子页面中改变iframe的页面,如何修改iframe框内的样式,如何在iframe的子页面中改变iframe的页面,css修改iframe里面的样式,修改iframe内容,操作iframe内部元素,修改iframe中的代码,内容如对您有帮助,希望把文章链接给更多的朋友!

使用这个方法获取页面iframe中的dom对象,注意可能会有下面两种结果:

如果iframe和它的父级在同一个域名下,那么这个方法返回document(是一个嵌套的浏览器上下文环境)如果iframe和它的父级不在同一个域名下,那么这个方法返回null

有了上面的这个原则,我们就知道在不跨域的情况下我们能够更容易的修改iframe内部元素的样式,跨域情况则无法获取到iframe内部的元素,只能通过其他方式来达到目的(下面会介绍),首先来看下不跨域是怎样做的。

不跨域修改iframe中元素的样式方式1:直接获取到元素修改let iframeDocument = document.getElementsByTagName("iframe")[0].contentDocument;iframeDocument.body.style.backgroundColor = "blue";// This would turn the iframe blue.

通过上面的操作,把iframe中body的背景色修改为“blue”

方式2:在iframe的head中插入样式表// 页面上有一个id为i1的iframe,它嵌入的是同源的文件 child.html<iframe id="i1" src="./child.html" frameborder="0" width="100%" height="400"></iframe>// 借助jQuery在iframe加载后,向其内部插入style.css$('#i1').load(function () { let cssLink = document.createElement("link"); cssLink.href = "style.css"; cssLink.rel = "stylesheet"; cssLink.type = "text/css"; $('#i1') .contents().find("head") .append($('<link rel="stylesheet" type="text/css" href="style.css">') );});// style.cssbody { background-color: aqua;}修改iframe内部元素的样式(iframe更改自身src)

这样我们就修改了iframe中body的背景色。

跨域修改iframe中元素的样式

使用到的方法如下:

Window.postMessage()window.addEventListener(“message”,cb())

父级页面中引入了一个不同域名下的iframe,第一,需要在父级页面发送信息,第二,在iframe页面内监听并处理信息,来间接的修改样式。这是为了保证跨域通信的安全,详细内容参考 这里。

下面介绍具体做法: 父级页面引入了一个跨域的iframe,id为i3

<iframe id="i3" src="./cross.html" onload="load()"></iframe>// 在它加载完成后,执行下面的方法function load() { console.log('loaded') activateTheme("light");}// 这里我们封装了一个activateTheme方法,方便后边复用,作用是修改iframe内部的主题颜色function activateTheme(theme) { var iframe = document.getElementById("i3"); if (iframe && iframe.contentWindow) { iframe.contentWindow.postMessage(theme, "*"); }}

当iframe加载完成后,我们向它内部传递了activateTheme(“light”);浅色主题的消息,下面看下它内部如何接收并做出响应:

// cross.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>child</title> <style> body, body.theme-light { background-color: #ededed; padding: 1rem; } body.theme-dark { background-color: #444; color: #fff; } </style></head><body> <script> window.addEventListener("message", function (event) { if (event.origin === window.location.origin) { console.log(event.data) document.body.classList = [] document.body.classList.add(`theme-${event.data}`) } }, false ); </script></body></html>

可以看出,我们在接收到父级传来的消息,根据消息的内容来修改了cross.html body的背景色。并且在这里我们可以做一下是否同源的安全校验。

到这里我们可以得出一个结论:如果你嵌入的iframe页面和父级不是同一域下,而且当你可以在iframe页面中监听事件,这样你才能修改它内部的样式,否则无法修改。

文章首发于 IICOOM-个人博客|技术博客 《修改iframe内部元素的样式》

本文链接地址:https://www.jiuchutong.com/zhishi/283335.html 转载请保留说明!

上一篇:js实现web页面扫描二维码(html5-qrcode)(html 调用扫码)

下一篇:PcCtlCom.exe是什么进程 PcCtlCom进程查询(ccmexec.exe是什么程序)

  • 苹果13怎么关后台(苹果13怎么关后面的灯)

    苹果13怎么关后台(苹果13怎么关后面的灯)

  • wps图表怎么改横纵坐标(wps生成的图表横竖转换)

    wps图表怎么改横纵坐标(wps生成的图表横竖转换)

  • 华为手机怎么开启儿童模式(华为手机怎么开启相册权限)

    华为手机怎么开启儿童模式(华为手机怎么开启相册权限)

  • wifi突然断网怎么回事(wifi突然断网怎么找到断网时间)

    wifi突然断网怎么回事(wifi突然断网怎么找到断网时间)

  • 快手直播间被关闭是什么意思(快手直播间被关闭怎么办)

    快手直播间被关闭是什么意思(快手直播间被关闭怎么办)

  • 华为天气怎么放不到桌面(华为天气怎么放在桌面)

    华为天气怎么放不到桌面(华为天气怎么放在桌面)

  • 蓝牙耳机发微信语音不清楚(蓝牙耳机发微信语音延迟怎么解决)

    蓝牙耳机发微信语音不清楚(蓝牙耳机发微信语音延迟怎么解决)

  • 华为p40照相机怎么用(华为P40照相机怎么调照相好)

    华为p40照相机怎么用(华为P40照相机怎么调照相好)

  • 京东购物打白条有优惠是什么意思(京东购物打白条有利息吗)

    京东购物打白条有优惠是什么意思(京东购物打白条有利息吗)

  • 健康码能注销吗(健康码怎么能注销)

    健康码能注销吗(健康码怎么能注销)

  • 抖音资料不合法 修改不过来怎么办(抖音上资料不合法什么意思)

    抖音资料不合法 修改不过来怎么办(抖音上资料不合法什么意思)

  • 快手下的订单在哪里查询(快手上的订单在哪找)

    快手下的订单在哪里查询(快手上的订单在哪找)

  • 华为手机计算器怎么变成科学计算器(华为手机计算器删除了怎么恢复)

    华为手机计算器怎么变成科学计算器(华为手机计算器删除了怎么恢复)

  • 淘宝隐藏评价别人能看到吗(淘宝隐藏评价别人是不是就看不到了)

    淘宝隐藏评价别人能看到吗(淘宝隐藏评价别人是不是就看不到了)

  • 云计算最上层是什么(云计算中最关键的两层)

    云计算最上层是什么(云计算中最关键的两层)

  • xp系统任务栏在上面

    xp系统任务栏在上面

  • 荣耀手环5和4的区别(荣耀手环5华为手环4区别)

    荣耀手环5和4的区别(荣耀手环5华为手环4区别)

  • 拼多多主图尺寸(拼多多主图尺寸大小是1:1吗)

    拼多多主图尺寸(拼多多主图尺寸大小是1:1吗)

  • 姓名日期斜线怎么弄(表格中姓名日期斜线上面斜的 姓名 两个字怎么弄)

    姓名日期斜线怎么弄(表格中姓名日期斜线上面斜的 姓名 两个字怎么弄)

  • 系统更新对手机有影响吗(系统更新对手机信号有影响吗)

    系统更新对手机有影响吗(系统更新对手机信号有影响吗)

  • y93简易桌面在哪(vivoy31s简易桌面)

    y93简易桌面在哪(vivoy31s简易桌面)

  • 怎样制作课件 幻灯片(怎样制作课件ppt动画顺序)

    怎样制作课件 幻灯片(怎样制作课件ppt动画顺序)

  • 英雄联盟怎么改名字?更名卡如何使用?(英雄联盟怎么改左键移动)

    英雄联盟怎么改名字?更名卡如何使用?(英雄联盟怎么改左键移动)

  • 电脑学习网免费wordpress主题破解版本Zibll子比主题V5.4最新版完美破解-电脑学习网(学电脑哪个网站比较好)

    电脑学习网免费wordpress主题破解版本Zibll子比主题V5.4最新版完美破解-电脑学习网(学电脑哪个网站比较好)

  • 城建税和教育费附加需要计提吗
  • 未核销fyc
  • 购买库存商品的运输费
  • 生产企业免抵退税
  • 预期报酬率和期望报酬率一样吗
  • 小微企业减免附加税会计分录
  • 租金属于什么会计要素
  • 增值税16点税降到13点,补缴税款怎么算
  • 房地产企业开发成本科目明细
  • 物业公司收到一年物业费开具发票后如何确认收入
  • 朋友挂靠公司社保
  • 员工借备用金怎么写摘要
  • 工程多少金额需要投标
  • 承兑到期不兑付应起诉哪方?
  • 外方获得的利润怎么算
  • 海外佣金税务怎么缴纳
  • 小规模通行费发票可以抵扣吗
  • windows10专业版是哪个版本
  • 员工罚款算收入吗
  • 进项税年末需要结转么
  • php验证码代码怎么写
  • 法人不缴纳社保员工可以缴纳吗怎么办
  • php or
  • php curlfile
  • excel2019冻结
  • php面向对象编程学生类
  • 固定资产与固定资产净值
  • vue项目使用rem
  • sysmon安装
  • 递延收益会计科目的账务处理
  • 个体户可以不办公户吗
  • python%s
  • 深度解析冯德伦最后为什么选了舒淇
  • javascript高阶
  • js必学知识点
  • 增值税认证清单路径
  • 帝国cms移动端
  • 数据库帮助文档
  • 金蝶标准版怎么查应收应付款
  • 签发转账支票需要的单据
  • 个税如果是公司怎么申报
  • 政府补助的界定
  • 小规模纳税人征税起点
  • 申报残保金的时候有处罚决定书怎么办
  • 研发费用按50%的预算
  • 营改增对财务人员的影响
  • 待摊费用和预付费用的区别
  • 外购货物分配给股东
  • 金税盘抄报税这是怎么个流程
  • 年终奖企业应该计入哪个会计年度
  • 年报中的认缴出资时间怎么填
  • 购买维修费怎么做分录
  • 产品成本核算有哪些方法
  • 新注册的公司怎么申报个税
  • 公司法人可以变更给老人吗
  • win8.1 multiple edition
  • fedora os
  • Linux操作系统之rm命令详解
  • 4G内存时linux的mtrr表不正确的解决
  • win8系统如何关闭防火墙
  • Win10 Redstone版Build 14251现身 正式版将在7月份发布
  • nodejs静态编译
  • 用python写网页
  • Node.js中的包管理工具是什么
  • python模块导入的几种方法
  • 基于arcgis的python编程
  • java复选按钮
  • js右键菜单
  • 有趣的单机游戏
  • 聊天界面的新消息通知设置 找不到
  • windows捕获文件夹
  • jquery基本知识
  • java script课程
  • pjblog修改技巧汇总
  • javascript面向
  • python字符串的用法
  • jquery删除数据
  • 财税老师刘杨年龄
  • 印花税会计分录怎么做 印花税需要计提吗
  • 杭州 国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设