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

  • 电脑如何切换屏幕(电脑如何切换屏幕键盘)

    电脑如何切换屏幕(电脑如何切换屏幕键盘)

  • 淘宝直播回放删除有影响吗(淘宝直播回放删除了对流量有影响吗)

    淘宝直播回放删除有影响吗(淘宝直播回放删除了对流量有影响吗)

  • 快手注销账号第一条不通过怎么办(快手注销账号第二天别人知道吗)

    快手注销账号第一条不通过怎么办(快手注销账号第二天别人知道吗)

  • 苹果se2怎么设置动态壁纸(苹果se2怎么设置灵动岛)

    苹果se2怎么设置动态壁纸(苹果se2怎么设置灵动岛)

  • ipadcellular和WLAN的区别

    ipadcellular和WLAN的区别

  • 天猫精灵指示灯是橙色闪烁(天猫精灵指示灯一直亮着 却没反应)

    天猫精灵指示灯是橙色闪烁(天猫精灵指示灯一直亮着 却没反应)

  • 用亲情号支付对方能看到详细信息吗(亲情号支付对方会有短信提示吗)

    用亲情号支付对方能看到详细信息吗(亲情号支付对方会有短信提示吗)

  • 部分好友可见别人能看到吗(部分好友可见和部分好友不可见的区别)

    部分好友可见别人能看到吗(部分好友可见和部分好友不可见的区别)

  • 页边距内侧和外侧是指(页边距内侧和外侧在哪设置)

    页边距内侧和外侧是指(页边距内侧和外侧在哪设置)

  • ios13信号不稳定(ios13信号不稳定是因为软件吗)

    ios13信号不稳定(ios13信号不稳定是因为软件吗)

  • gps跟导航的区别(gps与导航是一个东西吗)

    gps跟导航的区别(gps与导航是一个东西吗)

  • ipad2018出厂有膜吗(ipad2020出厂带不带膜)

    ipad2018出厂有膜吗(ipad2020出厂带不带膜)

  • 微信公众号留言点赞可以刷吗(微信公众号留言功能怎么开通)

    微信公众号留言点赞可以刷吗(微信公众号留言功能怎么开通)

  • 艺术字的环绕方式在哪(艺术字环绕方式在哪里设置)

    艺术字的环绕方式在哪(艺术字环绕方式在哪里设置)

  • 华为dub al00是啥型号(华为dub-al00是什么型号)

    华为dub al00是啥型号(华为dub-al00是什么型号)

  • word开始菜单取消隐藏(word文档开始菜单)

    word开始菜单取消隐藏(word文档开始菜单)

  • 华为mate30是5g手机么(华为MATE30是5G手机吗)

    华为mate30是5g手机么(华为MATE30是5G手机吗)

  • 华为mate30是什么系统(华为mate30什么型号)

    华为mate30是什么系统(华为mate30什么型号)

  • 苹果x怎么给照片上锁(苹果x怎么设置照片)

    苹果x怎么给照片上锁(苹果x怎么设置照片)

  • 华为mate30支持wifi6吗(华为mate30支持wifi5g吗)

    华为mate30支持wifi6吗(华为mate30支持wifi5g吗)

  • 1g内存适合装什么Linux系统(1g内存适合装什么)

    1g内存适合装什么Linux系统(1g内存适合装什么)

  • 如何使用万能钥匙连接wifi(如何使用万能钥匙查看wifi密码)

    如何使用万能钥匙连接wifi(如何使用万能钥匙查看wifi密码)

  • 小米手环nfc什么作用(小米手环nfc什么意思)

    小米手环nfc什么作用(小米手环nfc什么意思)

  • 联想一体机如何重装系统?联想一体机系统重装教程(联想一体机如何调节屏幕亮度)

    联想一体机如何重装系统?联想一体机系统重装教程(联想一体机如何调节屏幕亮度)

  • 如何让别人访问本地运行的vue项目(如何让别人访问自己的qq空间)

    如何让别人访问本地运行的vue项目(如何让别人访问自己的qq空间)

  • 企业所得税核定征收怎么计算
  • 不是公司的车能抵扣进项吗
  • 简易征收预缴税款可以抵扣吗
  • 资产负债表中没有实收资本
  • 对方只能开普票怎么办
  • 结构性存款需要缴纳增值税吗
  • 6月份的申报期是几号
  • 申报附加税增加一行如何增加
  • 企业应交所得税怎么算
  • 开具有误拒收的增值税专用发票怎么办?
  • 公司报销专用发票
  • 劳务关系需要缴社保吗?
  • 白条入账的会计分录
  • 员工的油费补贴怎么算
  • 纳税人取得不动产进项税额怎么抵扣
  • 冲销预付款的会计分录
  • 工会经费可不可以不交
  • 收到保险公司财产理赔款怎么做账
  • 冷库租赁收入税率
  • 个税申报异常怎么办
  • 退票费报销凭证可以在机子上打印吗
  • 增值税先征后退属于政府补助吗
  • 企业合作开发的研发费怎样加计扣除?
  • 公司给另外一家公司投资
  • 按适用税率征税货物及劳务销售额
  • 预计产品质量保证损失是什么意思
  • 虚开增值税简单例子
  • 反映留存收益的账户
  • win10删除所有内容是什么意思
  • 鸿蒙桌面卡片怎么变小
  • 硬盘的日常维护需要做到什么?
  • 捐赠支出税前扣除票据
  • u盘装系统?
  • linux使用cp
  • linux系统中查看进程的命令
  • PHP:curl_version()的用法_cURL函数
  • 折旧计算表属于外来原始凭证吗
  • 退货时可以按部分退货吗
  • 主播录屏软件哪个好
  • php生成xml文件
  • 黑暗的树荫
  • 还贷款利息会计怎么做账
  • php模板引擎有哪些
  • lama羊驼
  • uniapp scroll-view基础用法
  • JS初识
  • 企业出口证明
  • 委托加工代收代缴消费税分录
  • 一般纳税人应交增值税
  • 常见的防暑降温药有
  • 残疾人就业保障金会计分录怎么做
  • 无奖有票是什么意思
  • 公摊水电费计入什么科目
  • 营业税金及附加会计分录
  • 经营地址怎么变更
  • 借别人的承兑后期还现钱可以吗?
  • sql server导出
  • mysql隐式类型转换规则
  • mysql 5.7启动
  • mysql远程访问不了
  • 苹果mac电脑打不开
  • win7 64位旗舰版系统运行游戏提示计算机丢失mxvcp120.dll的解决方法
  • 阿里云电脑系统
  • win81蓝屏重启故障
  • MSupdate.exe - MSupdate是什么进程 有什么用
  • windows10用法
  • ubuntu安装指南
  • win7耳机和外放一起响
  • win8升win8.1
  • Cocos2dx3.2 Crazy Tetris 绘制不规则方块 遮罩(ClippingNode的使用)
  • unity 接入sdk
  • python算法的应用
  • python2与python3的区别
  • unity检测tag
  • jquery入口
  • jquery获取url地址
  • 联华超市华联超市哪个厉害
  • 湖北税务投诉电话
  • 出售废铁的会计分录
  • 如何查询车辆购买的保险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设