非js脚本打开浏览器窗口的关闭解决方案

embedded/2024/10/15 21:53:53/

js脚本打开方式浏览器窗口

关闭方式:

window.close()

非js脚本打开方式浏览器页面

只是前端开发者会惊奇的发现,使用window.close() API,并不能每次成功关闭浏览器窗口,打开控制台发现会有一条警告信息

错误分析:

为什么浏览器要限制 close()?

在我们去深入了解哪些因素会制约 close() 方法之前,我们先要明白为什么需要对它有限制。

有时候这种限制会被含糊地解释为 “安全问题“,但核心其实是简单的 “用户体验“ 问题 - 如果一个标签页或者窗口被突然的关掉,用户可能会丢失一些浏览器中一些重要的状态值或者 “前进/后退” 历史记录栈(在 IE 中,我们称之为 TravelLog)。用户可能使用标签页在浏览一系列的搜索记录(搜索一下-打开,回退到搜索结果页面,再打开另一个,类似这种操作),如果某个搜索结果页面可以直接干掉自己和前面的搜索结果页,用户会非常苦恼。

也有一个 反滥用/安全 观点,如果一个浏览器页签可以随便关闭自己,对于一些恐吓软件或一些用户体验滥用(软件)来说,这个规则可能很有用。

下面是 HTML 标准部分 dom-window-close 说到:

一个浏览上下文可以用脚本关闭,有两种情况:

  • 这是一个由脚本打开的(区别于用户自己打开) 辅助浏览上下文
  • 这是一个顶层浏览上下文,检索历史记录只有一个 document

解决方案:

if (navigator.userAgent.indexOf('Firefox') != -1 || navigator.userAgent.indexOf('Chrome')!= -1) {window.location.href = 'about:blank'window.close()} else {window.opener = nullwindow.open('', '_self')window.close()
}


http://www.ppmy.cn/embedded/128091.html

相关文章

企业在隔离网环境下如何进行安全又稳定的跨网文件交换?

在数字化时代,企业的数据流通如同血液一般重要。然而,当企业内部实施了隔离网环境,跨网文件交换就成了一个棘手的问题。今天我们将探讨在隔离网环境下,企业面临的跨网文件交换挑战,以及如何通过合规的跨网文件交换系统…

目录类QDir

Qt使用"/"来作为通用的目录分隔符,所以表示文件路径的字符串中我们最好用"/" 使用"/",Qt会自动的转换你的路径来匹配你当前使用的操作系统 常用静态方法 获取当前项目所在的路径 [static] QString QDir::currentPath(…

YoloDotNet 图像目标检测功能详解

文章目录 一、模型选择与下载二、环境配置与库引用三、图像读取与预处理四、模型加载与初始化五、目标检测执行六、结果展示与分析一、模型选择与下载 在使用 YoloDotNet 进行图像目标检测时,首先需要选择合适的模型。Yolo 有多个版本,如 YoloV5、YoloV8 等,每个版本又有不同…

《大规模语言模型从理论到实践》第一轮学习--Fine-tuning微调

第一轮学习目标:了解大模型理论体系 第二轮学习目标:进行具体实操进一步深入理解大模型 从大语言模型的训练过程来理解微调 大预言模型训练主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。 预训练(Pretraining&…

PHP静态化和伪静态如何实现的

PHP静态化和伪静态的实现方式分别如下: PHP静态化 静态化后的页面可以直接被浏览器访问,无需再经过服务器端的处理,加载速度更快。PHP实现静态化的方法主要有以下几种: 使用输出缓冲区: 通过ob_start()函数开启输出缓…

Swift添加自定义字体

1. 在 Xcode 中添加自定义字体 首先,你需要将自定义字体文件(如 .ttf 或 .otf 文件)添加到项目中。 将字体文件拖放到项目的资源管理器中,确保选中了 "Copy items if needed"。打开 Info.plist 文件,添加一…

拉拢商家、直播PK,这届双11开始卷平台

文丨郭梦仪 在一声声“上链接”中,不少网友在昨晚已经成为了第一批“尾款人”。第一份战报也在今日傍晚发出。 据天猫双11战报显示,活动首小时,大家电整体成交同比去年双11预售同期暴涨765%。仅开售4小时,老板、TCL、西门子、方太…

Mysql(八) --- 视图

文章目录 前言1.什么是视图?2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引,这次我们来学习视图 1.什么是视图? 视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询…