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

  • 苹果13promax来电闪光灯怎么打开(苹果13promax来电闪光灯怎么设置怎么打不开)

    苹果13promax来电闪光灯怎么打开(苹果13promax来电闪光灯怎么设置怎么打不开)

  • 钉钉可以切换账号吗(钉钉可以切换账号后怎么切回原来的账号)

    钉钉可以切换账号吗(钉钉可以切换账号后怎么切回原来的账号)

  • vivo手机如何连接蓝牙(vivo手机如何连接空调开关)

    vivo手机如何连接蓝牙(vivo手机如何连接空调开关)

  • 手机号被别人注册滴滴(手机号被别人注册微信了怎么办)

    手机号被别人注册滴滴(手机号被别人注册微信了怎么办)

  • 华为怎么隐藏照片(华为怎么隐藏照片信息)

    华为怎么隐藏照片(华为怎么隐藏照片信息)

  • 华为p40pro插卡位置(华为p40 pro插卡在哪里)

    华为p40pro插卡位置(华为p40 pro插卡在哪里)

  • gtt认证什么意思(gtc证书和ngtc证书的区别)

    gtt认证什么意思(gtc证书和ngtc证书的区别)

  • 拼多多保证金容易退吗(拼多多保证金能秒到账吗)

    拼多多保证金容易退吗(拼多多保证金能秒到账吗)

  • 打别人电话老是通话中(打别人电话老是转语音)

    打别人电话老是通话中(打别人电话老是转语音)

  • vivos5的闪存是什么规格(vivos7的闪存)

    vivos5的闪存是什么规格(vivos7的闪存)

  • 抖音账号密码忘记了(抖音账号密码忘了怎么注销)

    抖音账号密码忘记了(抖音账号密码忘了怎么注销)

  • 卡上显示hd什么意思(卡显示hd什么意思)

    卡上显示hd什么意思(卡显示hd什么意思)

  • 京东预约后怎么修改(京东预约后怎么取消)

    京东预约后怎么修改(京东预约后怎么取消)

  • 手机淘宝如何领金币(手机淘宝怎样领劵)

    手机淘宝如何领金币(手机淘宝怎样领劵)

  • 蓝牙耳机红蓝交替闪烁怎么回事(蓝牙耳机红蓝交替闪烁是什么状态)

    蓝牙耳机红蓝交替闪烁怎么回事(蓝牙耳机红蓝交替闪烁是什么状态)

  • 计算机键盘基础知识(计算机键盘基础题目)

    计算机键盘基础知识(计算机键盘基础题目)

  • 场景推广是什么意思(场景推广适合什么产品)

    场景推广是什么意思(场景推广适合什么产品)

  • 微信视频不显示怎么回事(微信视频不显示在屏幕上怎么设置)

    微信视频不显示怎么回事(微信视频不显示在屏幕上怎么设置)

  • qq附近群聊在哪里找(qq附近群聊在哪里找2020)

    qq附近群聊在哪里找(qq附近群聊在哪里找2020)

  • 怎么把抖音喜欢的清零(怎么把抖音喜欢的作品删除掉)

    怎么把抖音喜欢的清零(怎么把抖音喜欢的作品删除掉)

  • 手机号码错了怎么取货(手机号码错了怎么改)

    手机号码错了怎么取货(手机号码错了怎么改)

  • 路由器突然不能上网怎么办 路由器突然无法连接网络的解决方法(路由器突然不能上网了显示红灯)

    路由器突然不能上网怎么办 路由器突然无法连接网络的解决方法(路由器突然不能上网了显示红灯)

  • 阿里通义千问、百度文心一言、ChatGPT与GPT-4大比拼(阿里通义千问官网)

    阿里通义千问、百度文心一言、ChatGPT与GPT-4大比拼(阿里通义千问官网)

  • Java Timer(定时器)(java定时器怎么用)

    Java Timer(定时器)(java定时器怎么用)

  • 减免税额和免税额一样吗
  • 年初结转增值税社保如何做账
  • 新公司需要去当地街道报备劳动关系证明吗
  • 增值税纳税义务确认时间
  • 工资中代扣款是什么
  • 企业所得税减免政策2023
  • 车船税代扣代缴手续费
  • 金银首饰在哪个平台买比较好
  • 固定资产提折旧 账务处理
  • 预付款什么时候确认收入
  • 工程公司后期维保费用如何入账?
  • 小企业所得税申报流程
  • 代扣代缴手续费企业所得税
  • 公司没有设年终奖要报税吗
  • 增值税普通发票几个点
  • 只开增值税普通发票,需要申报税务吗
  • 预提 冲销
  • 撤销实收资本会怎么样
  • 小规模纳税人的起征点是多少
  • 预缴时少缴税款是否需要缴纳滞纳金?
  • 公司地址变更代办需要多少钱
  • 1697510552
  • 顶账的固定资产怎么入账
  • 仓库的租赁费
  • 电脑bios启动项设置
  • 是否填写国家统计局一套表
  • 建筑工程简易计税可以抵扣吗
  • 补丁自动过期怎么解决
  • 如何设置路由器步骤要详细
  • 装win7提示失败怎么办
  • vant3.0
  • 今天春节是什么生肖
  • 应纳所得税额税率表
  • framework在哪看
  • 计提费用收到发票后会计分录
  • unix时间戳长度
  • php中实现文件上传需要用到哪几个函数
  • php is_a
  • semeion手写数据集
  • 小规模纳税人可以开专票吗
  • 高价值配件用入固定资产吗
  • 中标违约保证金怎么算
  • 增值税普通发票税率
  • 无形资产减值准备是什么科目
  • 汇兑结算方式的会计分录例题
  • 先给发票后付款做账
  • 注销营业执照的app
  • 小规模纳税人有个人所得税吗?
  • 办公室租金产生的税率
  • 嵌入式软件产品应纳税额
  • 预收账款可以长期挂账吗
  • 高速公路过路费怎么算的
  • 第三方代缴社保合法吗最新规定
  • 没有发票就不能保修吗
  • 房地产开发企业增值税税率
  • 银行存款日记账对方科目两个怎么办
  • 公司的私账
  • mysql in如何优化
  • sqlserver中时间类型
  • 存储过程mysql
  • 破解ssh端口
  • win10怎么办
  • centos6.x下安装maven CentOS自动安装Maven的方法
  • u盘怎么安装win7镜像文件
  • 打开word显示
  • 电脑出现内部版本7601怎么办
  • Cocos2d-x之getVisibleSize,getContentSize,boundingBox,getContentSizeInPixels,convertToGL,convertToUI
  • Android OpenGL ES(三)----编程框架
  • cocos2dx4.0教程
  • nodejs import
  • linux shell终端
  • activity怎么用
  • 深入理解计算机系统
  • javascript要怎么学
  • jquery ajax分页插件的简单实现
  • php curl获取cookie
  • JavaScript 事件绑定及深入
  • 百旺开票人怎么把管理员改成人名
  • 购房合同交契税怎么交
  • 迅雷网站官网下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设