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

  • 固定资产的确认条件包括
  • 餐厅打包盒算不算商品
  • 工商年报纳税总额包括哪些税
  • 来料加工出口免税不退税
  • 研发项目增值税税率
  • 税控盘和税控钥匙一样吗
  • 发票几个月内可以红冲作废
  • 工程预缴税款流程
  • 法人其他应付款在借方表示
  • 品牌对企业收益的影响
  • 居民个人根据各项所得的收入 公益捐赠
  • 缴纳社保的会计分录怎么做
  • 不是单位职工个税怎么算
  • 私营企业实行固定税率
  • 该企业本月发生如下经济业务
  • 抵扣上月留抵税额的分录
  • 分公司代理人
  • 安装工程劳务合同
  • 服装公司业务范围有哪些
  • 非独立核算的分公司是什么意思
  • 这些常用的发票知识,你都知道了吗?
  • 纳税人核定征收企业所得税
  • 农产品增值税免税政策
  • 营改增后融资租赁税率
  • 视同销售收入计入会计利润中吗
  • 计提坏账准备的会计分录
  • macos的复制粘贴快捷键
  • 企业转让房产所得税税率
  • php开发用什么ide
  • 电脑每次开机都要选择系统怎么办
  • gazebo中机器人导航在rviz中不显示地图仅限显示轨迹
  • PHP:apache_setenv()的用法_Apache函数
  • 外贸企业退税需要哪些资料
  • 报销差旅费会计科目怎么写
  • 高端显卡排名
  • PHP:zip_entry_open()的用法_Zip函数
  • 货物运输发票怎么备注发票样板
  • php的魔术函数
  • php 单例模式优点及如何实现
  • 酒店客房成本构成
  • jquery教程chm
  • 哪些农产品属于免税
  • 自营与代理
  • 母子公司资产划转的涉税问题
  • phpcms不支持https怎么办
  • 织梦常用调用标签
  • 电子税务局怎么查询开票记录
  • 核定征税是什么意思
  • 有差价的商品发票怎么开
  • 外币账户记账方法
  • 受托代销商品款是什么意思
  • 抵债资产处置账务实例
  • 职工福利费汇算清缴
  • 展览门票收入按什么征税
  • 收据 和发票
  • 建筑行业总产值占我国GDP的比重
  • 工商银行代收是什么意思
  • 财政返还什么意思
  • fedora29
  • office解压后如何安装
  • win10系统无法卸载补丁
  • win7系统如何调节电脑屏幕亮度
  • win10系统玩lol弹出来
  • windows8.1开机
  • 清除win7更新缓存
  • win7系统怎么关闭屏幕保护
  • win7如何获取管理员密码
  • android打包v1v2
  • cocos2dx 4.0
  • unity3d初学者教程视频
  • js辅助器下载
  • jquery 刷新div
  • jquery动态生成页面
  • js中的类和对象
  • 小微企业税务优惠政策
  • 国税系统升级后怎么添加办税人
  • 小规模纳税人购买车辆如何入账
  • 税务部门客服
  • 广告费加计扣除标准
  • 车辆购置税交了怎么查询不到
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设