js判断页面是否是在iframe里面

文章目录

  • 一、前言
    • 1.1、`_blank`跳转
    • 1.2、`_self`跳转
  • 二、方法
    • 2.1、判断子项目是否是在`iframe`内部
    • 2.2、实现`_self`跳转
  • 三、最后

一、前言

上面是父前端项目里的iframe加载了子前端项目的页面。此时如果点击子项目的内容,如果要进行父项目浏览器页面跳转,可以使用方法window.open(url, target)。这里的target会有2种跳转方式,_self_blank

1.1、_blank跳转

如果是_blank,那就是浏览器打开新的标签页,直接在子项目里使用window.open(url, '_blank')即可实现

1.2、_self跳转

如果是_self,需要实现的是浏览器在当前标签页内重定向URL地址,这就是本文需要说的内容

二、方法

2.1、判断子项目是否是在iframe内部

console.info("🚀 ~ file:index method:isInFrame line:66 ----- window.frames.length", window.frames.length)
console.info("🚀 ~ file:index method:isInFrame line:67 ----- parent.frames.length", parent.frames.length)
if (window.frames.length !== parent.frames.length) {console.info("🚀 ~ file:index method:isFrame line:66 -----", '方式二')return true
}

如果不是在iframe内部,此时window.frames.lengthparent.frames.length是一致的。因此判断不一致的话就肯定是在iframe内部了。可以看到上面示例window.frames的长度是0,而parent.frames的长读是1,因此也就确定了子项目是在iframe内部。

2.2、实现_self跳转

执行下面的代码即可在浏览器当前标签页下实现跳转:

window.parent.window.open(url, '_self')

三、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++初阶 类(上)

目录 1. 什么是类 2. 如何定义出一个类 3. 类的访问限定符 4. 类的作用域 5. 类的实例化 6. 类的大小 7. this指针 1.this指针的引出 2. this指针的特性 8. 面试题 1. 什么是类 在C语言中,不同类型的数据集合体是结构体。为了方便管理结构体,我…

HarmonyOS NEXT应用开发案例——自定义TabBar

介绍 本示例主要介绍了TabBar中间页面如何实现有一圈圆弧外轮廓以及TabBar页签被点击之后会改变图标显示,并有一小段动画效果。 效果图预览 使用说明: 依次点击tabBar页面,除了社区图标之外,其它图标往上移动一小段距离。 实现…

中霖教育:消防工程师报考条件汇总

消防工程师考试报名条件汇总,想要参加考试的考生可以根据自己的专业和学历判断自己是否符合条件。 1、大专学历,消防工程专业,工作年限满6年,从事消防安全技术工作满4年;消防工程相关专业,工作年限满7年,从…

实习记录课程内容

2024年3月1日18:21:09 第二周周五——方法篇 等量关系的构造 初中数学中,让学生构造等量关系的数学原理主要包括以下几个方面: 等式的性质:等式的两边同时加上或减去同一个数,等式仍然成立;等式的两边同时乘以或除以…

利用API接口进行竞品价格监控

在电子商务和零售行业,了解竞争对手的定价策略对于保持市场竞争力至关重要。随着技术的发展,通过编程接口(API)获取商品详情成为企业监控竞品价格的有效手段。本文将详细介绍如何利用API接口实现竞品价格监控的流程和策略。 第一步…

EventSource数据一次性出来

基于txt/event-stream的EventSource流,使用代理时需注意: 开发阶段如果使用vue自带的代理,需要关闭compress,即 devServer: {proxy: {/xx: {target: ip,changeOrigin: true,pathRewrite: {^/xx: /xx}},},compress: false}再nginx部…

浅谈字典攻击

一、前言 字典攻击是一种常见的密码破解方法,它使用预先编制的字典文件作为攻击字典,通过尝试猜测密码的方式来破解密码。下面是一个关于字典攻击的博客,希望能够为您了解字典攻击提供帮助。 二、字典攻击概述 字典攻击是一种密码破解方法&…

文献学习-14-一种用于高精度微创手术的纤维机器人

Authors: Mohamed E. M. K. Abdelaziz1,2 †, Jinshi Zhao1,3 †, Bruno Gil Rosa1,2 , Hyun-Taek Lee4 , Daniel Simon3,5 , Khushi Vyas1,2 , Bing Li6,7 , Hanifa Koguna3 , Yue Li1 , Ali Anil Demircali3 , Huseyin Uvet8 , Gulsum Gencoglan9,10, Arzu Akcay11,12, Moham…

CDR(CorelDRAW)2024最新汉化注册补丁包下载

CorelDRAW 2024是一款功能强大的平面设计软件,广泛应用于图形设计、编辑照片以及创建网站等领域。凭借对高级操作系统的支持、多监视器查看和4K显示屏的兼容性,它让初始用户、图形专家、小型企业主和设计爱好者都能自信快速地交付专业级结果。 CorelDRA…

一文教你搞懂Vue生命周期

Vue生命周期 生命周期示意图 Vue3 组件创建阶段 new vue new一个vue的实例对象;此时会进入组件的创建过程(该组件在代码中被注册并使用时,就代表着其被new了一个新的实例对象)。 Init Events & Lifecycle 初始化组件的事件和…

spring aop中获取request和response

Spring AOP 操作中如何使用request和response 实际使用时,如果方法一不行,请使用方法二 方法一 HttpServletRequest request ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse respons…

Python执行 nohup 导致僵尸进程问题. /usr/bin/sh -> /usr/bin/bash

将 /usr/bin/sh -> dash 改成 /usr/bin/sh -> /usr/bin/bash 即可解决. ln -sf /usr/bin/bash /usr/bin/sh cmd" nohup python3 xxxx.py > /xx/xxx.log 2>&1 &" #在python里执行上边的命令ret subprocess.Popen(cmd,shellTrue,stdouts…

uniapp封装文字提示气泡框toolTip组件

uniapp封装文字提示气泡框toolTip组件 文字提示气泡框:toolTip 因为uniapp 中小程序中没有window对象,需手动调用 关闭 第一种办法关闭:this.$refs.tooltip.close() 第二种办法关闭:visible.sync false 移动端没有现成的toolTip组…

【2024.03.05】定时执行专家 V7.1 发布 - TimingExecutor V7.1 Release

目录 ▉ 软件介绍 ▉ 新版本 V7.1 下载地址 ▉ V7.1 新功能 ▼2024-03-03 V7.1 - 更新日志 ▉ V7.0 新UI设计 ▉ 软件介绍 《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式&#x…

InstantiationAwareBeanPostProcessor学习

简介 InstantiationAwareBeanPostProcessor 是 Spring 框架中的一个核心接口,它允许在 Spring 容器实例化 bean 之前和之后执行自定义逻辑。这个接口扩展了 BeanPostProcessor 接口,并增加了与 bean 实例化和属性填充相关的回调方法。 这个接口定义的主…

swift 闭包捕获列表

以下函数会打印出什么? var car "Benz" let closure { [car] in print("I drive \(car)") } car "Tesla" closure() 因为 clousre 已经申明将 car 复制进去了([car]),此时clousre 里的 car…

Linux运维工程师不可或缺的10款工具

运维工程师在日常工作中频繁运用的10款工具,并细致阐述每款工具的功能、适用场景以及其卓越之处。 1. Shell脚本: 功能:主要用于自动化任务和批处理作业。 适用场景:频繁用于文件处理、系统管理、简单的网络管理等操作。 优势&…

[论文笔记] Transformer-XL

这篇论文提出的 Transformer-XL 主要是针对 Transformer 在解决 长依赖问题中受到固定长度上下文的限制,如 Bert 采用的 Transformer 最大上下文为 512(其中是因为计算资源的限制,不是因为位置编码,因为使用的是绝对位置编码正余弦编码)。 Transformer-XL 能学习超过固定长…

unicloud 获取集合collection并请求云数据库

unicloud 获取集合collection并请求数据库 在unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)这一篇文章中,我介绍了unicloud数据库以及如何新建表数据 如果没看过的话可以去看看,然后在看这篇文章,因为这篇文章讲解的是如何获取云数据库的数据集合,要想获取,你得…

后量子时代,未来密码该何去何从?

古有飞鸽,现有网络,在知识经济为基础的信息化社会中,保障网络信息安全无疑成为成为国与国之间无形的较量。小到个人通讯,大到机要信息传输,信息安全对于国家安全和经济活动正常运转至关重要。密码学作为保障网络与信息…