driver.js 扩展下次“不再提示”功能

news2024/12/29 13:51:20

文档地址:https://github.com/kamranahmedse/driver.js
官方demo:https://kamranahmed.info/driver.js/

/**
 * @Title: 页面引导 ……
 * @Author: JackieZheng
 * @Date: 2023-08-16 10:43:31
 * @LastEditTime: 2023-08-16 10:55:08
 * @LastEditors:
 * @Description:
 * @FilePath:utils\\driver.js
 */
import { driver } from 'driver.js'
import 'driver.js/dist/driver.css'
import { ElMessage, ElMessageBox } from 'element-plus'
import store from '../store'

const driverObj = driver({
  popoverClass: 'driverjs-theme',
  showProgress: true,
  opacity: 0.1,
  animate: true,
  allowClose: true, // 是否允许点击遮罩时关闭
  doneBtnText: '我知道了',
  closeBtnText: '跳过', //  关闭按钮文案
  nextBtnText: '下一步', // 下一步的按钮文案
  prevBtnText: '上一步', // 上一步的按钮文案
  keyboardControl: true, // 允许通过键盘控制(退出关闭,箭头键移动)
  progressText: '{{current}} / {{total}}',
  guidName:'',
  /**
   *@description: 准备开始退出事件
    *@author: JackieZheng
    *@date: 2023-08-16 12:47:38
  */
  onDestroyStarted: () => {
    // doSomething
    driverObj.destroy() // 自理完后,必须要重新执行退出
  },
  /**
   *@description: 点击关按钮或外部关闭
   *@author: JackieZheng
   *@date: 2023-08-16 12:47:14
  */
  onCloseClick: () => {
    // doSomething
    driverObj.destroy() // 处理完后,必须要重新执行退出
  },

  /**
   *@description: 彻底退出事件
   *@author: JackieZheng
   *@date: 2023-08-16 12:47:38
  */
  onDestroyed: () => {
    // doSomething
    driverObj.destroy() // 处理完后,必须要重新执行退出
  },
  /**
   *@description: 设置某个页面显示引导
   *@author: JackieZheng
   *@para: guidName 当前页面 参数
   *@date: 2023-08-16 14:05:31
  */
  ShowGuidesSet: (guidName) => {
    const guides = store.state.driverGuides
    guides[guidName] = true
    store.commit('CacheDriverGuides', guides)
  },
  /**
 *@description: 不再展示某个页面的引导
 *@author: JackieZheng
 *@date: 2023-08-16 14:05:06
*/
  HideNextTime: (guidName) => {
    const guides = store.state.driverGuides
    guides[guidName] = false
    store.commit('CacheDriverGuides', guides)
  },
  /**
   *@description: 最后一步 改下次是否提示
   *@author: JackieZheng
   *@date: 2023-10-04 13:20:07
  */
  onHighlighted : () => {
    if (!driverObj.hasNextStep()) {
      let preBtn = document.querySelector('.driver-popover-prev-btn')
      let btn = document.createElement('button')
      btn.textContent = '不再提示'
      btn.style.cssText =
        'background-color: #ff9800;border: 2px solid #ff9800;'
      btn.addEventListener('click', ()=> {
        driverObj.getConfig().HideNextTime(driverObj.getConfig().guidName)
        driverObj.destroy()
      })
      let btnBox = preBtn.parentNode
      btnBox.insertBefore(btn, preBtn)
      btnBox.removeChild(preBtn)
    }
  },
  /**
   *@description: 检测是否 不再提示
   *@author: JackieZheng
   *@date: 2023-10-04 13:32:50
  */
  enableShow:()=>{
    return store.state.driverGuides[driverObj.getConfig().guidName] !== false
  }


})

export default driverObj

使用

<script setup name="lbooks">

import driverObj from '../utils/driver'

  /* 设置引导 提示步骤及内容 */
  const driverSteps = [
    {
      element: '.obj_install',
      popover: {
        title: '提示',
        showButtons: false,
        description:
          '本面有些内容需要喝杯水能正常显示'
      }
    }
  ]

  /* 启动driver */
  onMounted(() => {
    driverObj.getConfig().showProgress = false
    driverObj.getConfig().guidName = 'Ebk'
    driverObj.getConfig().ShowGuidesSet('Ebk') // 调试时 强制启用引导
    if (driverObj.getConfig().enableShow()) {
      driverObj.setSteps(driverSteps)
      driverObj.drive()
    }
  })
</script>

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

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

相关文章

找不到msvcp110.dll是什么意思?总结msvcp110.dll丢失修复方法分享

随着电脑技术的不断发展&#xff0c;我们也会遇到各种各样的问题。最近&#xff0c;我就遇到了一个问题&#xff1a;电脑丢失msvcp110.dll的困扰。这个问题让我深感无奈&#xff0c;但同时也让我学到了很多关于电脑维修和系统修复的知识。在这篇文章中&#xff0c;我将分享我的…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(五)

思维导图 Bom操作 一、Window对象 1.1 BOM(浏览器对象模型) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vi…

macOS Sonoma 正式版系统已发布,macos14值得更新吗

北京时间9月27日macOS Sonoma 正式版系统发布&#xff0c;为 Mac 带来一系列丰富新功能&#xff1a;优化小组件、升级视频会议、沉浸式游戏体验等&#xff0c;最新macos14值得更新吗&#xff1f;这里根据我一个月的试用beta版本体验来分享一下。 我使用的是M1芯片的MacBook air…

Java架构师功能设计和架构设计

目录 1 架构设计理念1.1 架构定义1.2 文档编写1.3 维护和改进1.4 验证实现1.5 总结 2 深入理解和认识架构设计2.1 架构设计关注哪些东西2.2 架构设计是一系列的活动不断演化和完善的过程2.3 架构设计跨越软工的全流程2.3.1 软工的全流程的原因 3 功能设计概念4 理解和认识功能设…

【Vue3】定义全局变量和全局函数

// main.ts import { createApp } from vue import App from ./App.vue const app createApp(App)// 解决 ts 报错 type Filter {format<T>(str: T): string } declare module vue {export interface ComponentCustomProperties {$filters: Filter,$myArgs: string} }a…

openwrt使用教程

openwrt 插件安装 首先 我们需要明确自己什么版本的cpu 进入docker 然后 cat /proc/cpuinfo# 查看CPU信息 uname -m# 查看CPU架构 cat /proc/meminfo# 查看内存使用情况 df -h# 查看磁盘的使用率 uname -a# 查看内核信息 opkg print-architecture# 可接受的架构arm a5 比较奇…

Maven超细致史上最全Maven下载安装配置教学(2023更新...全版本)建议收藏...赠送IDEA配置Maven教程

Maven安装与配置 Maven 的主要目标是让开发人员能够在最短的时间内了解开发工作的完整状态。为了实现这一目标&#xff0c;Maven 处理了几个关注领域&#xff1a; 简化构建过程 提供统一的构建系统 提供优质的项目信息 鼓励更好的发展实践 基于项目对象模型 (POM&#xff0…

找不到msvcr110.dll丢失的解决方法-常见修复方法分享

在计算机使用过程中&#xff0c;我们可能会遇到 msvcr110.dll 丢失的问题。msvcr110.dll 是 Microsoft Visual C Redistributable 的一部分&#xff0c;是一个运行库文件&#xff0c;用于支持一些软件和游戏的运行。如果它丢失或损坏了&#xff0c;那么你就需要进行修复了。本文…

【C语言】循环结构程序设计(第二部分 -- 习题讲解)

前言:昨天我们学习了C语言中循环结构程序设计&#xff0c;并分析了循环结构的特点和实现方法&#xff0c;有了初步编写循环程序的能力&#xff0c;那么今天我们通过一些例子来进一步掌握循环程序的编写和应用。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &am…

conda安装使用jupyterlab注意事项

文章目录 一、conda安装1.1 conda安装1.2 常见命令1.3 常见问题 二、jupyterlab2.1 jupyterlab安装和卸载2.2 常见错误2.2.1 版本冲突&#xff0c;jupyterlab无法启动2.2.2 插件版本冲突 2.3 常用插件2.3.1 debugger2.3.2 jupyterlab_code_formatter 2.4 jupyter技巧 一、conda…

聊聊分布式架构——Http到Https

目录 HTTP通信协议 请求报文 响应报文 持久连接 状态管理 HTTPS通信协议 安全的HTTPS HTTP到HTTPS的演变 对称加密 非对称加密 混合加密机制 证书机构 SSL到底是什么 HTTPS是身披SSL外壳的HTTP HTTP通信协议 一次HTTP请求的通信流程&#xff1a;客户端浏览器通过…

【C++】STL简介(了解)

一、什么是STL STL (standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 。 二、STL的版本 原始版本 Alexander Stepanov 、 Meng Lee 在惠普实验…

swift加载h5页面空白

swift加载h5页面空白 problem 背景 xcode swift 项目&#xff0c;WebView方式加载h5页面本地h5地址是&#xff1a;http://localhost:5173/ 浏览器打开正常 Swift 加载h5&#xff1a; 百度官网 加载正常本地h5页面 加载空白&#xff0c;没有报错 override func viewDidLoad…

RabbitMQ-工作队列

接上文 RabbitMQ-死信队列 1 工作队列模式 xx模式只是一种设计思路&#xff0c;并不是指具体的某种实现&#xff0c;可理解为实现XX模式需要怎么去写业务代码。 之前的是简单的一个消费者一个生产者模式&#xff0c;下边是一个生产者多个消费者的情况&#xff1a; 这里先定义两…

想要精通算法和SQL的成长之路 - 最长连续序列

想要精通算法和SQL的成长之路 - 最长连续序列 前言一. 最长连续序列1.1 并查集数据结构创建1.2 find 查找1.3 union 合并操作1.4 最终代码 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 最长连续序列 原题链接 这个题目&#xff0c;如何使用并查集是一个小难…

带你10分钟学会红黑树

前言&#xff1a; 我们都知道二叉搜索树&#xff0c;是一种不错的用于搜索的数据结构&#xff0c;如果二叉搜索树越接近完全二叉树&#xff0c;那么它的效率就会也高&#xff0c;但是它也存在的致命的缺陷&#xff0c;在最坏的情况下&#xff0c;二叉搜索树会退化成为单链表&am…

Spring三大核心组件

Spring架构图 Spring三大核心组件分别为&#xff1a;Core、Beans和Context 1. Core&#xff08;核心&#xff09;&#xff1a; 思想&#xff1a;Core组件的核心思想是控制反转&#xff08;IoC&#xff09;和依赖注入&#xff08;DI&#xff09;。它将对象的创建、组装和管理的…

【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

番外--Task2:

任务&#xff1a;root与普通用户的互切&#xff08;区别&#xff09;&#xff0c;启动的多用户文本见面与图形界面的互切命令&#xff08;区别&#xff09;。 输入图示命令&#xff0c;重启后就由图形界面转成文本登录界面&#xff1b; 输入图示命令&#xff0c;重启后就由文本…

Netron【.pt转.torchscript模型展示】

Netron是一个模型的展示工具&#xff0c;它有网页版和app版&#xff1a; 网页版&#xff1a;Netron app版&#xff1a;GitHub - lutzroeder/netron: Visualizer for neural network, deep learning, and machine learning models 直接用网页版吧&#xff0c;还不用安装。 它可…