【前端面试题】如何判断用户是否离开当前页面?

简介: 在今年秋招的笔试题中,有部分小伙伴遇到了这样一个题:写一段代码用于判断用户是否离开当前页面

在今年秋招的笔试题中,有部分小伙伴遇到了这样一个题:写一段代码用于判断用户是否离开当前页面


不出所料,这个问题难倒了一大批的面试者


其实这考查的是html5中一个新的事件——visibilitychange,当用户进入页面或者离开页面时,都会触发该事件


与此同时,在document对象上也新增了一个属性 visibilityState,它有两个值:分别为 visiblehidden ,顾名思义,当用户在使用当前页面时,该属性的值为 visible ;当用户离开页面时,该属性的值为 hidden


我们结合上面个知识点,就可以写一段代码,用来判断用户是否离开当前页面了


    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>判断用户是否离开页面</title></head><body>    <script>        /*  实现该功能:当用户离开页面时, 打印 '离开页面' ; 当用户回到页面时, 打印 '回到页面'   */        document.addEventListener('visibilitychange', function() {            if(document.visibilityState == 'hidden') {                console.log('离开页面');            } else {                console.log('回到页面');            }        })</script></body></html>


    我们来看一下实际的效果吧


    253a47213afdd0078b29a1117d26469a.jpg


    扩展一下应用的话,我们可以在事件处理函数中写入一段Ajax代码,用于在用户离开页面时向服务端发送一条信息,就可以实现监控用户在网页中考试答题作弊情况了

    相关文章
    |
    14天前
    |
    存储 前端开发 JavaScript
    前端面试题23-34
    通过对 Promise 和 ECMAScript6 的深入理解,可以更好地应对现代 JavaScript 开发中的复杂异步操作和新特性,提升代码质量和开发效率。
    15 2
    |
    5天前
    |
    前端开发 安全 UED
    【项目实战】从终端到浏览器:实现 ANSI 字体在前端页面的彩色展示
    在学习和工作中,我们经常需要使用日志来记录程序的运行状态和调试信息。而为了更好地区分不同的日志等级,我们可以使用不同的颜色来呈现,使其更加醒目和易于阅读。 在下图运行结果中,我们使用了 colorlog 库来实现彩色日志输出。通过定义不同日志等级对应的颜色,我们可以在控制台中以彩色的方式显示日志信息。例如,DEBUG 级别的日志使用白色,INFO 级别的日志使用绿色,WARNING 级别的日志使用黄色,ERROR 级别的日志使用红色,CRITICAL 级别的日志使用蓝色。
    |
    4天前
    |
    存储 前端开发 搜索推荐
    Web前端网站(一) - 登录页面及账号密码验证
    页面背景动态是烟花和文字特效与缓缓下落的雪花相结合,在登录表单的旁边还有五个白色光圈以不规则的方式环绕,当鼠标靠近时,会发出彩色的光芒~~~
    21 1
    Web前端网站(一) - 登录页面及账号密码验证
    |
    1天前
    |
    JSON 前端开发 JavaScript
    SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
    SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
    6 2
    |
    1天前
    |
    缓存 负载均衡 前端开发
    SSMP整合案例第八步 前端页面的分页功能完善与维护和实现条件查询
    SSMP整合案例第八步 前端页面的分页功能完善与维护和实现条件查询
    5 1
    |
    1天前
    |
    前端开发 JavaScript Java
    SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改
    SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改
    5 1
    |
    8天前
    |
    存储 缓存 监控
    2024春招小红书前端面试题分享
    2024春招小红书前端面试题分享
    30 3
    |
    14天前
    |
    前端开发 JavaScript 虚拟化
    前端面试题12-22
    ES6(ECMAScript 2015)是 JavaScript 的重要版本,引入了许多新特性和语法,提升了语言的功能和可用性。ES6 的主要特性包括箭头函数、类、模板字符串、解构赋值、默认参数、Promise、模块化、Generator 函数、async 函数、Proxy 和 Reflect 等。这些特性不仅简化了代码的编写和维护,还为开发者提供了更多的编程范式和工具。了解和掌握 ES6 的特性是现代 JavaScript 开发的必备技能。
    7 1
    |
    14天前
    |
    JSON 前端开发 JavaScript
    前端面试题01-11
    Map是ES6引入的一种新的键值对集合数据结构,类似于对象,但键的范围不限于字符串,还可以是任何类型的值。Map保持键值对的插入顺序,提供更灵活的键值对操作方法,如`set()`、`get()`、`delete()`、`has()`等。
    11 1
    |
    4天前
    |
    前端开发 JavaScript
    阿里云验证码2.0 验证时报错 前端页面获取的验证参数有问题,动态JS加载失败,请问怎么解决啊?急,急,急。
    用户反馈校验时遇到错误,日志显示验证码参数获取异常。采用无痕验证,失败后,返回`{captchaResult:false,bizResult:false}`,未触发滑块二次验证。