当前位置: 首页 > news >正文

多层级iframe下JS调用点击事件

//var  approval='accent_info'
// 获取所有的 span 元素  
var spans = top.frames[2].document.querySelector("#submitRequestDispatchDiv > iframe").contentDocument.getElementsByTagName('span');  // 遍历 span 元素  
for (var i = 0; i < spans.length; i++) {  var spanText = spans[i].textContent || spans[i].innerText; // 兼容不同的浏览器  // 检查 span 文本是否包含approval  if (spanText.includes(approval)) {  // 向上遍历 DOM 树,找到最近的 .list-group-item.row 元素  var listGroupItem = spans[i].closest('.list-group-item.row');  // 在这个 .list-group-item.row 元素内找到复选框并选中它  var checkbox = listGroupItem.querySelector('input[type="checkbox"]');  if (checkbox) {  checkbox.checked = true;  }  }  
}

        这段JS主要作用是,获取浏览器中第三个iframe中ID为 submitRequest DispatchDiv 的内嵌 iframe(至于为什么不直接获取内嵌的iframe,是因为内嵌的iframe是动态生成的),然后获取到所有的标签span,并判断文本是否等于approval的值,最后获取到标签所对应的复选框,勾选。

        iframe主要是做多页面嵌入,常用在一个页面包含多个标签的地方

<iframeid="inlineFrameExample"title="Inline Frame Example"width="300"height="200"src="https://www.openstreetmap.org/export/embed.html?bbox=-0.004017949104309083%2C51.47612752641776%2C0.00030577182769775396%2C51.478569861898606&layer=mapnik">
</iframe>

        src里为目标页面地址,在这种情况下,使用document是获取不到,指定的元素对象。

        top.frames[2]可以获取到第三个页面,top是获取当前浏览器窗口(或标签页)中所有框架(包括顶级窗口和所有嵌套的 iframe、frame)的集合中的第三个。

        document.querySelector("#submitRequestDispatchDiv > iframe")获取ID为submitRequestDispatchDiv的元素。

        contentDocument 它主要用于访问 <iframe> 或 <frame> 元素中的文档对象

        getElementsByTagName('span')获取span标签的对象

        var spanText = spans[i].textContent || spans[i].innerText 获取文本内容

        spans[i].closest('.list-group-item.row');  获取span的上一级元素

相关文章:

  • Sui的Fastcrypto加密库刷新速度记录
  • 【单片机】三极管的电路符号及图片识别
  • 机动车检测站授权签字人精选试题(附答案)
  • elasticsearch的入门与实践
  • 入侵检测系统(IDS)
  • 【文末附gpt升级秘笈】关于“登月游戏”的详细内容介绍
  • java程序什么时候需要在运行的时候动态修改字节码对象
  • minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析
  • [Qt] Qt Creator中配置 Vs-Code 编码风格
  • 算法第八天:leetcode 35.搜索插入位置
  • TVBOX 最新版下载+视频源教程
  • 深入理解Java中的并发编程
  • 【LeetCode215】数组中的第K个最大元素
  • 爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
  • Ant-Design-Vue动态表头并填充数据
  • 4. 路由到控制器 - Laravel从零开始教程
  • co模块的前端实现
  • ES6系统学习----从Apollo Client看解构赋值
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • learning koa2.x
  • Nacos系列:Nacos的Java SDK使用
  • ng6--错误信息小结(持续更新)
  • nginx 配置多 域名 + 多 https
  • Redis在Web项目中的应用与实践
  • Swift 中的尾递归和蹦床
  • vuex 学习笔记 01
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 驱动程序原理
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • const的用法,特别是用在函数前面与后面的区别
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​Python 3 新特性:类型注解
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • #《AI中文版》V3 第 1 章 概述
  • #stm32驱动外设模块总结w5500模块
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)Nginx简介和安装教程
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (补充)IDEA项目结构
  • (接口自动化)Python3操作MySQL数据库
  • (三) diretfbrc详解
  • (一)Java算法:二分查找
  • (转) Android中ViewStub组件使用
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转载)Linux 多线程条件变量同步
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Family_物联网
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • [100天算法】-二叉树剪枝(day 48)
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]