位置: 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是什么程序)

  • 华为p30有nfc功能吗(华为p30的nfc使用教程)

    华为p30有nfc功能吗(华为p30的nfc使用教程)

  • 小米云相册怎么恢复到手机相册(小米云相册怎么下载到手机)

    小米云相册怎么恢复到手机相册(小米云相册怎么下载到手机)

  • 罗技g304用什么电池(罗技G304用什么碱性电池)

    罗技g304用什么电池(罗技G304用什么碱性电池)

  • 华为智能助手快递不见了(华为智能助手快递功能绑定怎么取消)

    华为智能助手快递不见了(华为智能助手快递功能绑定怎么取消)

  • 华为手机显示一半屏幕(华为手机显示一个迈速表)

    华为手机显示一半屏幕(华为手机显示一个迈速表)

  • 安全模式可以上网吗(安全模式上网)

    安全模式可以上网吗(安全模式上网)

  • 为什么软件打不开(为什么软件打不开电脑)

    为什么软件打不开(为什么软件打不开电脑)

  • vivoz5与z5x的区别(vivoz5与z5x的区别外观)

    vivoz5与z5x的区别(vivoz5与z5x的区别外观)

  • 腾讯会议文档导入失败的原因(腾讯会议文档导出权限设置)

    腾讯会议文档导入失败的原因(腾讯会议文档导出权限设置)

  • 1296p和1080p哪个更清晰(1296p和1080p哪个更好)

    1296p和1080p哪个更清晰(1296p和1080p哪个更好)

  • 微视在朋友圈发视频为什么别人看不到(微视朋友圈发视频)

    微视在朋友圈发视频为什么别人看不到(微视朋友圈发视频)

  • 荣耀30pro+什么时候上市(荣耀30pro+什么时候上市的)

    荣耀30pro+什么时候上市(荣耀30pro+什么时候上市的)

  • 华为手机卡1卡2设置在哪里(华为手机卡1卡2在哪里查找到)

    华为手机卡1卡2设置在哪里(华为手机卡1卡2在哪里查找到)

  • 华为双微信在哪里开启(华为手机双微信在哪里设置)

    华为双微信在哪里开启(华为手机双微信在哪里设置)

  • vivox27微信能美颜吗(vivox27微信怎么美颜)

    vivox27微信能美颜吗(vivox27微信怎么美颜)

  • 苹果7p保修期多久(iphone7plus保修期)

    苹果7p保修期多久(iphone7plus保修期)

  • ipad怎么改繁体字(苹果ipad繁体字怎么设置中文字幕)

    ipad怎么改繁体字(苹果ipad繁体字怎么设置中文字幕)

  • 微信勿扰模式什么意思(微信勿扰模式什么效果)

    微信勿扰模式什么意思(微信勿扰模式什么效果)

  • 苹果手表电池能用几年(苹果手表电池能用一天吗)

    苹果手表电池能用几年(苹果手表电池能用一天吗)

  • MX250和gtx1650差多少

    MX250和gtx1650差多少

  • 手机恢复qq收藏(手机qq恢复我的收藏)

    手机恢复qq收藏(手机qq恢复我的收藏)

  • 电话无人接听怎么回事(电话无人接听怎么设置自动回复短信)

    电话无人接听怎么回事(电话无人接听怎么设置自动回复短信)

  • 苹果手机的趣步为什么更新不了(苹果手机趣步怎么更新最新版本)

    苹果手机的趣步为什么更新不了(苹果手机趣步怎么更新最新版本)

  • 下载的视频怎么转换格式(下载的视频怎么设置成动态壁纸)

    下载的视频怎么转换格式(下载的视频怎么设置成动态壁纸)

  • slee401.exe - slee401是什么进程  有什么用

    slee401.exe - slee401是什么进程 有什么用

  • 东内格罗斯省沿海的鹦嘴鱼,菲律宾 (© Tim Fitzharris/Minden Pictures)(内格罗斯岛)

    东内格罗斯省沿海的鹦嘴鱼,菲律宾 (© Tim Fitzharris/Minden Pictures)(内格罗斯岛)

  • 全国增值税发票查询平台 手机版
  • 税收优惠属于政策吗
  • 哪些费用可以放到研发费用中
  • 不征税收入确认递延收益如何填报
  • 个人所得税年度汇算时间
  • 业务招待费报销要求
  • 电子发票入账是什么意思
  • 非盈利机构怎么说
  • 酒店购买餐具会计分录
  • 差额开票如何入账
  • 预售收入是否可以退税
  • 装修工程分期开票分期付款如何作账?
  • 餐饮业购买餐桌椅会计分录
  • 工资未发放是否可以仲裁
  • 商品编码选错税务会直接罚款吗?
  • 城市建设维护税是什么意思
  • 水利建设专项收入怎么计算
  • 收到退以前年度所得税
  • 代收污水处理费要交税吗
  • 向客户的续期相关通知
  • 注册资本与注册资金的区别
  • 承租人交付房屋标准
  • 维修开票单位写什么
  • 个人接受捐赠要开发票吗
  • 非全日制劳动用工扣税
  • 商场赠送购物券是真的吗
  • 销售净利率如何分析出来
  • 劳务费和工资薪金合并计算个人所得税合适吗
  • 华为鸿蒙系统怎么看安卓版本
  • 关闭通知横幅
  • 短期借款应付利息列报
  • 开户银行对公司有影响吗
  • 华为mate x3最新价格
  • php laravel教程
  • php中的变量都以什么开头
  • win10哪个版本流畅兼容性好
  • php 正则表达式
  • 期间费用为何要摊销
  • 哪些货物出口不需要运输条件
  • php7.2编译安装
  • 总部资产减值会考吗
  • 房地产企业营改增是哪一年
  • 直接材料成本差异账户在平时登记贷方登记
  • 什么情况下要预提集装箱
  • 一只什么海鸥填空
  • 捐赠支出如何做凭证
  • 销售费用凭证
  • linux信号的本质
  • 常用激活函数及其导数
  • sybaris插件包
  • 预付款项属于什么
  • 劳动仲裁要出钱吗
  • 营改增后残保金计入什么科目
  • 差旅费包干是什么意思
  • 企业从政府部门辞职流程
  • 公司的实收资本是什么意思
  • 通过MySQL日志实时查看执行语句以及更新日志的教程
  • 公司法人的车租给公司怎么开发票
  • 哪些进项税不允许从销项税额中抵扣
  • 深入分析的成语
  • 企业固定资产账户核算的固定资产其所有权均属于本企业
  • 经营性现金净流量公式
  • 高新技术企业一定是先进制造业吗
  • 印花税申报流程视频
  • 股东分红需要
  • 折旧年限的最新规定2021
  • 会计的总目标是什么意思
  • MySQL利用不同的流程语句输出1到200的和
  • sql比较数值大小
  • ubuntu系统怎样
  • .intro
  • win7系统IE浏览器一点就闪退
  • 对用药方案做合理性评估时
  • 怎么在dos下运行
  • python的判断语句
  • c和unity3d
  • 按犍设置
  • 00后先进人物事迹简介
  • 上海嘉定小学入学积分
  • 安徽税务局检验员工资
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设