vue 手机物理监听键+退出提示代码

yizhihongxing

下面我就为大家详细讲解如何实现“vue 手机物理监听键+退出提示代码”。

步骤一:安装依赖和引入插件

首先,我们需要先安装依赖和引入插件。安装依赖可以使用npm或yarn进行安装,本教程使用yarn作为示例(前提是你已经通过npm安装了yarn)

yarn add vue-router@latest
yarn add -D @vue/cli-plugin-babel

然后,我们需要引用@vue/cli-plugin-babel插件,以支持ES6语法的编写。

// main.js

import Vue from 'vue';
import App from './App.vue';
import router from './router';

// 安装依赖
// ...

Vue.config.productionTip = false;

// 引入插件
Vue.use(require('@vue/cli-plugin-babel'));

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

步骤二:在页面中添加代码

其次,在页面中添加代码。我们需要监听手机物理返回键,当用户在页面内按下返回键时,触发退出提示弹窗。

<template>
  <div>
    <h1>Hello World</h1>
  </div>
</template>

<script>
export default {
  mounted() {
    this.listenUserBack();
  },
  methods: {
    listenUserBack() {
      window.history.pushState(null, null, window.location.href);
      window.addEventListener('popstate', this.nativeBackListener);
    },
    nativeBackListener() {
      this.$swal({
        title: '提示',
        text: '是否退出当前页面?',
        icon: 'warning',
        buttons: true,
        dangerMode: true,
      }).then((willDelete) => {
        if (willDelete) {
          window.removeEventListener('popstate', this.nativeBackListener);
          this.$router.go(-1);
        }
      });
      window.history.pushState(null, null, window.location.href);
    },
  },
};
</script>

以上代码中,我们监听了window全局对象中的popstate事件,并调用$swal()弹窗函数。如果用户点击弹窗中的确认按钮,则让用户返回上一级路由。

值得注意的是,我们在listenUserBack()方法中调用了window.history.pushState(null, null, window.location.href);方法,它实际上是为了让虚拟路由的状态发生变化,让手机物理返回键生效。

示例一:在vuex中添加全局退出按钮

如果你期望在每个页面中都添加全局退出按钮,那么你可以考虑在vuex中添加一个全局的isShowQuit状态,用于控制“退出提示框”的显示与隐藏。

第一步:安装依赖

首先,我们需要安装vuex依赖

yarn add vuex

第二步:创建并配置store

然后,我们需要创建一个store文件,用于存储全局状态和相关的mutationaction方法。

// store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    isShowQuit: false, // 是否显示退出提示框
  },
  mutations: {
    setShowQuitStatus(state, status) {
      state.isShowQuit = status;
    },
  },
  actions: {
    showQuitDialog(context) {
      context.commit('setShowQuitStatus', true);
    },
    hideQuitDialog(context) {
      context.commit('setShowQuitStatus', false);
    },
  },
});

export default store;

第三步:在app.vue文件中引入全局退出按钮

<!-- App.vue -->

<template>
  <div>
    <!-- 省略代码 -->
    <router-view />
    <!-- 添加全局退出按钮 -->
    <button v-if="isShowQuit" @click="confirmQuit">退出</button>
  </div>
</template>

<script>
export default {
  computed: {
    isShowQuit() {
      return this.$store.state.isShowQuit;
    },
  },
  methods: {
    confirmQuit() {
      this.$store.dispatch('hideQuitDialog');
      this.$router.back();
    },
  },
};
</script>

第四步:在需要调用退出提示框的页面调用showQuitDialog方法

在需要调用退出提示框的页面中,我们需要调用showQuitDialog方法

// About.vue

export default {
  methods: {
    exit() {
      this.$store.dispatch('showQuitDialog');
    },
  },
}

示例二:在页面中直接添加退出按钮

如果你仅需要在某个组件内部添加退出按钮,我们也可以直接在该组件中添加退出按钮,无需使用vuex

<template>
  <div>
    <h1>Hello World</h1>
    <button @click="showQuitDialog">退出</button>
  </div>
</template>

<script>
export default {
  methods: {
    showQuitDialog() {
      this.$swal({
        title: '提示',
        text: '是否退出当前页面?',
        icon: 'warning',
        buttons: true,
        dangerMode: true,
      }).then((willDelete) => {
        if (willDelete) {
          this.$router.go(-1);
        }
      });
    },
  },
};
</script>

以上代码中,我们在template标签中添加了一个显示文字为“退出”的按钮,在按钮上绑定@click事件,用于调用showQuitDialog()方法弹出退出提示框。如果用户点击确认按钮,则调用this.$router.go(-1)返回上一级路由。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 手机物理监听键+退出提示代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript实现json页面分页实例代码

    首先讲解一下如何使用JavaScript实现JSON数据的页面分页。 一、前置知识 在使用JavaScript实现JSON分页前,需要先掌握一些前置知识: AJAX:用于实现异步的数据传输。 JSON:JavaScript Object Notation,一种轻量级的数据交互格式。 二、代码实现 1. 引入jQuery库 在实际应用中,我们常常使用jQuer…

    JavaScript 2023年5月27日
    00
  • JavaScript中的闭包介绍

    一、什么是闭包 闭包是指能够访问其它函数内部变量的函数。在 JavaScript 中,函数是一等公民,即函数可以作为对象传递,也可以作为返回值返回。在函数中定义的变量也可以作为闭包的一部分,因此,当一个函数返回另一个函数时,闭包就会形成。 闭包的主要特点是可以访问外部函数作用域内的变量,即使外部函数已经返回了,这些变量的值也可以被访问和修改,因为这些变量仍然…

    JavaScript 2023年6月10日
    00
  • JavaScript中for循环的几种写法与效率总结

    以下是详细的攻略: JavaScript中for循环的几种写法与效率总结 1. for循环基本语法 for (let i = 0; i < length; i++) { // 循环体 } 其中,let i = 0 表示初始化一个变量 i ,初始值为 0 ; i < length 表示循环条件,当 i 小于 length 时,执行循环体; i++ …

    JavaScript 2023年5月28日
    00
  • javascript时间自动刷新实现原理与步骤

    JavaScript 时间自动刷新实现主要是通过不断更新页面上显示的日期和时间来实现,其实现步骤主要包括以下几步: 创建用于显示时间的 HTML 元素。可以使用 p 或 span 等标签,例如: <p id="time"></p> 创建用于更新时间的 JavaScript 函数。该函数需要通过定时器来不断更新时间,…

    JavaScript 2023年5月27日
    00
  • js中闭包结合递归等于柯里化原理解析

    下面是关于”js中闭包结合递归等于柯里化原理解析”的详细讲解。 什么是闭包 闭包是指一个函数能够访问并操作其外部作用域中的变量,即使这些变量已经超出了当前作用域的范围。在JavaScript中,函数是一等公民,可以作为变量、参数、返回值传递。闭包就是Javascript中的一个重要概念,因为它能够让我们在代码编写上更加灵活。 什么是递归 递归是指一个函数在其…

    JavaScript 2023年6月10日
    00
  • 基于ThinkPHP实现批量删除

    下面是详细讲解“基于ThinkPHP实现批量删除”的完整攻略。 背景 在一些网站或系统中,我们经常需要批量删除某些数据,如果手动一个一个删除,效率很低,而且容易出错。因此,我们需要实现一个批量删除的功能,来提高效率和降低错误率。本文将会以ThinkPHP为例,来讲解如何实现这个功能。 思路 具体的思路如下: 首先需要在前端页面上搭建一个删除按钮,勾选要删除的…

    JavaScript 2023年6月11日
    00
  • jQuery 动画与停止动画效果实例详解

    jQuery 动画与停止动画效果实例详解 本次攻略将会重点讲解jQuery中动画效果的运用与实现,同时还会包括如何停止动画效果。 jQuery 动画的基本使用方法 我们知道,jQuery提供了许多丰富的动画方法,如animate()、fadeIn()、fadeOut()、slideDown()、slideUp()等等,这里我们以animate()为例进行详细…

    JavaScript 2023年6月10日
    00
  • JS合并两个数组的3种方法详解

    这里是关于“JS合并两个数组的3种方法详解”的完整攻略。 标题 JS合并两个数组的3种方法详解 简介 在JavaScript中,有许多方法可以合并两个数组。在这篇文章中,我们将学习3种方法,包括使用concat()函数、使用spread操作符和使用Array.from()函数。 正文 1.使用concat()函数 concat()函数是JavaScript中…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部