js 实现页面隐藏、关闭、刷新给出对应的提示

news2024/11/18 17:32:23

我们在做项目的时候经常会遇到一些需求,比如在某些页面当点击浏览器刷新 或者关闭的时候会有对应的提示,是否离开或者重新加载此网站。比如csdn写文章的时候就有这个弹窗,这功能就是用onbeforeunload实现的。

注意:如果你加载下面代码的时候你进来的时候点击刷新可能会出现一次,但是点重新加载后,如果下次再进来,你再点击刷新按钮就不会出现该弹窗,原因是因为你页面内容没有发生变化,这个点击重新加载后再点击刷新出现弹窗的条件是你页面内容一样要发生了变化,比如表单重新输入,页面某个元素变化了或者删除了。

代码如下:

window.onbeforeunload = function (e) {
      e = e | window.event;
      if (e) {
        e.returnValue = '关闭提示';
      }
      return false;
    };

 浏览器切换其他页面或者最小化的时候触发,(ps: 常用于检测考试作弊行为)

一般来说,我们希望使用 Page Visibility API,在用户没有看到页面时停止不必要的进程,或者执行一些后台操作。可以下面这几种情况:

  • 当用户离开页面时,暂停视频、轮播图或动画。

  • 停止一些实时获取数据的API

  • 发送一些用户信息

  • 如何使用它?

    Page Visibility API 有两个属性和一个事件来访问页面可见性状态。

    document.hidden它是全局可用的,而且是只读的。尽量避免使用它,因为它现在已经被废弃了,但是当被访问时,如果页面是隐藏的,它将返回 true,如果是可见的,它将返回 false

    Document.visibilityState (只读属性)

    返回document的可见性,即当前可见元素的上下文环境。由此可以知道当前文档 (即为页面) 是在背后,或是不可见的隐藏的标签页,或者 (正在) 预渲染。可用的值如下:

  • 'visible' : 此时页面内容至少是部分可见。即此页面在前景标签页中,并且窗口没有最小化。

  • 'hidden' : 此时页面对用户不可见。即文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 '锁屏状态'

  • 'prerender' : 页面此时正在渲染中,因此是不可见的 (considered hidden for purposes of document.hidden). 文档只能从此状态开始,永远不能从其他值变为此状态。

  • visibilitychange

    当其选项卡的内容变得可见或被隐藏时,会在文档上触发 visibilitychange (能见度更改) 事件。

  • document.addEventListener("visibilitychange", () => {
        if (document.visibilityState === "visible") {
            // page is visible
        } else {
            // page is hidden
        }
    });
    

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

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

相关文章

学会用Linux用户管理命令

目录 useradd 添加新用户 1)基本语法 2)案例实操 passwd 设置用户密码 1)基本语法 id 查看用户是否存在 1)基本语法 2)案例实操 cat /etc/passwd 查看创建了哪些用户 1)案例实操 su 切换用户 1…

Linux基本工具(上)

目录 粘滞位:t yum yum install yum list ​编辑 yum list | grep 软件名 yum search 软件名 软件卸载:yum remove rz sz表示下载: Linux开发工具: vim编辑器: vim的几种模式: 粘滞位&#xff1a…

蛇形矩阵求解

题目: 题解思考: 这个题目我有两种解题方法: 1)利用数组,数组的下标。 2)利用等差数列的规律(这个可能比较难理解),行和列的递增规律。 注意输出格式的处理和多组输入…

三分钟带你手撕带头双向循环链表

数据结构——带头双向循环链表 🏖️专题:数据结构 🙈作者:暴躁小程序猿 ⛺简介:双非大二小菜鸟一枚,欢迎各位大佬指点~ 文章目录数据结构——带头双向循环链表前言一、什么是双向链表?二、带头…

图像智能处理黑科技,让图像处理信手拈来

图像智能处理黑科技,让图像处理信手拈来0. 前言1. 图像智能处理简介2. 图像切边增强3. PS 检测4. 图像水印去除5. 图像矫正6. 图像去屏幕纹7. 调用图像智能处理 API小结0. 前言 计算机视觉 (Computer Vision, CV) 通过研究如何令机器“看懂”世界,构建从…

嵌入式分享合集84

今天做的某地区的项目, 了解了一下 很是不开心 原来这几年丢的不仅是某公湖 真呵呵 一、学习单片机 如何系统地入门学习STM32? 假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。 你要考虑的是, 我可以用STM32实…

Scratch软件编程等级考试三级——20200913

Scratch软件编程等级考试三级——20200913理论单选题判断题实操幻影小猫打气球游戏猫咪抓老鼠游戏理论 单选题 1、要使以下代码运行后画出如图所示三角形风车,则以下代码中①②③④处应分别填入多少?() A、3 4 90 120 B、4 3 90…

实验项目一:【文本反爬网站的分析和爬取】

一、实验目的 熟悉使用Selenium、Pyppeteer等工具爬取网站基本内容,通过分析具有文本反爬技术网站,设计爬取策略来获取文本正确的内容。 二、实验预习提示 安装Python环境 (Python 3.x):Pychram社区版Anaconda为Pytho…

[SpringBoot] YAML基础语法

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

四线法与电桥

目录: 一、基本电桥电路 二、开尔文四线检测 三、惠斯通与开尔文电桥 1、电阻桥定义解释 2、电阻桥相关计算 3、开尔文双电桥 4、电阻桥的应用 --------------------------------------------------------------------------------------------------------…

java中的垃圾回收算法与垃圾回收器

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

Swift学习笔记笔记(五) Swift扩展协议类

一、 实验目的: 1.掌握Swift扩展型 2.掌握Swift协议 3.掌握Swift类 二、实验原理: 1.Swift扩展的定义 2.Swift协议的定义 3.Swift类的定义 三、实验步骤及内容: 1.方法 //实例方法 class Website { var visitCount 0 func visiting(){…

【LC】二叉树应用强化OJ

✨博客主页: 心荣~ ✨系列专栏:【LeetCode/牛客刷题】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录1. 检查两颗树是否相同2. 另一颗树的子树3. 二叉树最大深度4. 判断—颗二叉树是否是平衡二叉树5. 对称二叉树6. 二叉树的构建及遍历7. 二叉树的分层遍历8. 给定一个二叉树…

JAVAweb第一次总结作业

1.什么是html HTML的全称为超文本标记语言(Hyper Text Markup Language),是一种标记语言。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。 HTML文本是由HTML命令组成的描述性文本&…

【Python】import模块的多种操作

前言 记录一下关于Python在导入模块时候一些操作~ 知识点📖📖 Python魔法方法:__all__ Python内置模块:importlib 实现 指定导出的变量 当你在使用 from xxx import * 时候,可以通过 __all__ 来指定可被导出的变…

每天五分钟机器学习:通过学习曲线判断模型是过拟合还是欠拟合

本文重点 本节课程我们学习使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线其实就是训练误差和验证误差关于样本m的曲线,我们将通过学习曲线来判断该算法是处于高偏差问题,还是处于高方差问题。 高偏差问题(欠拟合) 注意:这个m表示训练集数据样本…

王二涛研究组揭示丛枝菌根共生与根瘤共生的协同进化机制

2021年,中国科学院分子植物科学卓越创新中心王二涛团队在《Molecular Plant》发表了“Mycorrhizal Symbiosis Modulates the Rhizosphere Microbiota to Promote Rhizobia Legume Symbiosis”研究论文,该研究通过定量微生物组、微生物共发生网络及微生物…

mac for m1(arm):安装redis的四种方式(本机安装、homebrew安装、虚拟机安装、docker安装)

0. 引言 redis作为当今最常用的非关系型数据库,被广泛应用于数据缓存场景。而mac m1采用arm芯片,使得众多软件安装成为问题,今天我们来看mac m1如何安装redis 1.本机安装redis 1、下载redis安装包:https://redis.io/download/ …

subplots()--matplotlib

1. 函数功能 成一个画布和若干子区。2. 函数语法 matplotlib.pyplot.subplots(nrows1, ncols1, *, sharexFalse, shareyFalse, squeezeTrue, subplot_kwNone, gridspec_kwNone, **fig_kw)3. 函数参数与示例 参数含义nrows, ncols画布被分成的行、列数squeeze布尔值&#xf…

【畅购商城】用户登录

用户登录 构建页面&#xff1a;Login.vue步骤一&#xff1a;创建Login.vue步骤二&#xff1a;绘制通用模块<template> <div> <TopNav></TopNav> <div style"clear:both;"></div> <HeaderLogo></HeaderLogo> <div…